2012-05-29 4 views
2

"(2 공백/탭 뒤") 파일의 각 줄을 앞에두고 문자열 "\ r \ n"+ "이 작업을 수행하기 전에 파일의 줄을 추가하려고합니다. . folllows로 같은 문자열을 파이썬으로 덧붙임

 <!--You have a CHOICE of the next 5 items at this level--> 
     <!--Optional:--> 
     <urn:Account id=\"?\"> 
      <!--Optional:--> 
      ............ 
      .............  

나는

inf=open("req.txt","r") 

outf=open("out.txt","w") 

for line in inf.readlines(): 

    outf.write("\"   "+line+"\\r\\n\" +") 

inf.close() 

outf.close() 

prepending이 예상되지만하게 부가 제대로 발생하지 않는 한이 일어나고, 다음 코드를 사용하고 최종 결과는 모든 라인 앞에 추가했다되었다 -. \ 연구 \ 첫 번째 줄에는 "."이 붙습니다.

내가 각 라인 앞에 추가 "를가 추가"를 원하는 \ 연구 \ n "+"

+1

그냥 코멘트 :의 readlines() 큰 파일 매우 비효율적이다 - 바로 파일 개체 자체 대신에게 반복. – jnnnnn

+0

어떻게하는지, 샘플 코드를 제공해주세요. – user1423015

답변

1

당신은 아마 파이썬의 문자열 형식 내장을 사용해야합니다.

outf.write("%s%s%s" % ('"   ', line, '\r\n" +')) 

그러나! 변경하기 전에 데이터에서 개행을 제거하지 않습니다. 결과적으로 형식, 전체 줄 (줄 바꿈 포함) 및 두 번째 부분을 얻게됩니다.

파이썬의 rstrip 메소드를 통해 실행할 수 있습니다. 당신이주의 할

outf.write("%s%s%s" % ('"   ', line.rstrip(), '\r\n" +')) 

한 가지가 rstrip 제거하려는 경우, 당신이 사용할 수있는 다음 줄 바꿈, 공백을 제거 할 수 있습니다 :

outf.write("%s%s%s" % ('"   ', line.rstrip("\r\n"), '\r\n" +')) 

을하지만,이 작업을 수행하면, 당신은 당신의 끈 끝에 다시 새로운 줄을 써야 할 것입니다.

outf.write("%s%s%s%s" % ('"   ', line.rstrip("\r\n"), '\r\n" +', "\r\n")) 

그러나! 기본 라인의 결말이 다를 수 있습니다 OS에 따라 올바르게 수행하는 방법은 다음 import os로 할 것입니다 :

outf.write("%s%s%s%s" % ('"   ', line.rstrip(os.linesep), '\r\n" +', os.linesep)) 
+0

호기심에서 벗어나서 왜 모든'\ r \ n'이 os.linesep로 바뀌지 않을까요? – lfxgroove

+0

'rstrip'에 대한 매개 변수로 실제로 할 수 있지만 세 번째 문자열 인수는 캐리지 리턴 및 줄 바꿈이 아닌 리터럴'\ r \ n '입니다. rstrip의 경우 라인 엔딩이 OS에 따라'\ r' 또는'\ n \ n' 또는'\ r \ n'이 될 것이기 때문에 실제로는 문제가되지 않지만 일관되게 변경되었습니다 . :) – OmnipotentEntity

+0

OmnipotentEntity에서 제공하는 정보는 유용하지만 주어진 코드는 나에게 도움이되지 못합니다. 하지만 아래의 코드는 저에게 도움이되었습니다. – user1423015

관련 문제