2012-05-29 70 views
2

我試圖用「(2個空格/製表符後面的)」前綴「file」的每一行,並在字符串後面加上「\ r \ n」+「。 。像如folllows python中的字符串追加

 <!--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() 

預謀如預期,但追加沒有發生正常發生的事情最終的結果是所有的線用前綴 - 。\ r \除第一行以外的第n行「+」,第一行只有前綴「」。

我想每一行前綴爲「並追加‘\ r \ n’+」

+1

只是評論:readlines方法()是對大文件的效率非常低 - 只要遍歷文件對象本身,而不是。 – jnnnnn

+0

該怎麼做,請給出示例代碼。 – user1423015

回答

1

你或許應該使用內置的字符串格式化Python的。

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

但是!在更改之前,您不會從數據中刪除換行符。結果你得到了你的格式,整個行(包括換行符),然後是你的第二部分。

你會想通過Python的內置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")) 

但是!根據您的操作系統默認的行結束可能是不同的,這樣做正確,你會想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的情況下,它並不重要,因爲根據您的操作系統,行結束要麼是\ r,要麼是\ n或是\ r \ n,但我將其更改爲一致。 :) – OmnipotentEntity

+0

由OmnipotentEntity提供的信息對我很有用,但給出的代碼對我無效。但下面的代碼爲我工作。 – user1423015