2012-11-29 2 views
2

그래서 내가 가진 문제는 기존 텍스트 파일을 가져 와서 각 줄에 XML 태그를 추가하는 새 파일을 만들 수 있어야한다는 것입니다. 예를 들어 :XML 태그를 추가하는 방법 파이썬에서 기존 텍스트 파일을 사용하여 새 파일을 만드시겠습니까?

Hello 
World 
This 
Is 
The 
Text 

내가 열고 새 파일에 기록하지만, 문제가 데이터를 조작하는 데, 내가 아직이야하는 방법을 알고이

<tag1>Hello</tag1> 
<tag2>World</tag2> 
<tag3>This</tag3> 
<tag4>Is</tag4> 
<tag5>The</tag5> 
<tag6>Text</tag6> 

같은 새 텍스트 파일에 기록해야한다 noob 그리고 이것은 stackoverflow에 대한 나의 첫 번째 질문이므로 어떤 도움을 주시면 감사하겠습니다.

답변

-1
>>> f = open('file.txt', 'r') 
>>> lines = f.readlines() 
>>> for index in range(len(lines)): 
...  print '<tag%s>%s</tag%s>'%(index+1, lines[index].strip(), index+1) 
... 
<tag1>Hello</tag1> 
<tag2>World</tag2> 
<tag3>This</tag3> 
<tag4>Is</tag4> 
<tag5>The</tag5> 
<tag6>Text</tag6> 
Hope you know how to write into file. 
+0

XML 텍스트 콘텐츠를 이스케이프 처리해야합니다. –

1

간단히 말하면 vim을 사용하여 텍스트 파일을 열고 다음을 입력하십시오.

:%s!\(.*\)!\=printf("<tag%d>%s</tag%d>", line("."), submatch(1), line("."))!g 

아니면 이것은 당신이에 해결할 수있을 것입니다 매우 간단한 문제가

from xml.sax.saxutils import escape 
for i,line in enumerate(open('file.txt')): 
    print "<tag{0}>{1}</tag{0}>".format(i+1,escape(line.strip())) 
+0

복잡해 보입니다. 이 간단한 라이브러리를 가져 와서 배울 필요가 없습니다. – goncalopp

+0

@goncalopp가'escape()'에 사용되었습니다. – mattn

+1

예, 눈치 챘습니다. OP가 게시 한 것은 IMHO를 탈출 할 필요성을 시사하지 않습니다. 그가 ** 나중에 도망 갈 필요가 있다면, 그는 문제를 피하는 대신 그것에 대해 배울 것입니다. 그래도 도서관이 아닙니다. 귀하의 솔루션의 가독성을 다음과 비교하십시오 :'for i, 열거 형 열거 형 (open ('file.txt')) : print " {1}".format (i, line)'. 람다와리스트의 독해력은 그들의 위치를 ​​가지고 있지만 자기 자격이있는 멍청한 놈을 돕지는 못합니다. – goncalopp

1

@goncalopp에서

또한
from xml.sax.saxutils import escape 
with open('file.txt', 'r') as f: 
    print "\n".join((lambda y: ["<tag%d>%s</tag%d>" % (i+1, escape(y[i].strip()), i+1) for i in range(0, len(y))])(f.readlines())) 

대답을 파이썬을 사용하고자하는 경우 개인적인. 몇 가지 문제가 있으니 일반적으로 대부분의 프로그래밍 문제를 공격하는 방법을 알려 드리겠습니다.

우선 으로 나뉩니다. xml 태그를 포함하도록 수정해야하는 텍스트 파일이 있습니다. 파일 열기 및 쓰기가 별도의 문제라는 것을 올바르게 파악했습니다. 이미 해결 방법을 알고 있습니다. 더구나, 명백하지만 각 줄에 유사한 반복 패턴 을 다루고 있다고 언급 할 가치가 있습니다.. 따라서 텍스트의 각 줄을 원하는대로 변형하는 방법을 알고 있다면 문제를 해결할 수 있습니다. 자, 첫 번째 라인을 살펴 보자 :

Hello 

다른에 하나를 변환하기 위해 수행해야하는 단계는 무엇

<tag1>Hello</tag1> 

이됩니까? 음, 두 번째는 문자열의 시작과 끝 부분에 삽입 된 텍스트가있는 첫 번째 것입니다! 이것은 문자열 연결라고하며 단순히 인터넷 검색을하면 즉시 답변을 찾을 수 있습니다. 또한 각 행마다 다른 태그 번호 문제가 있습니다. 이 문제는 카운터를 변수로 유지하고 숫자를 문자열로 변환 한 다음 연결하여 해결됩니다.

for i in range(10): 
    print i 

다른 : 다야

i=0 
while i<10: 
    print i 
    i+=1 

여기 카운터의 일례이다. 나는 당신이 지금 당신 자신의 문제를 해결할 수 있다고 확신합니다.

관련 문제