2013-08-16 58 views

回答

14

str.rstrip()刪除尾隨換行符,不是所有的換行符都在中間。畢竟,你有一個長字符串。

使用str.splitlines()將您的文檔分割成行沒有換行符;你可以歸隊,如果你想:

doclines = doc.splitlines() 
doc_rejoined = ''.join(doclines) 

但現在doc_rejoined將有沒有分隔符一起運行的所有線路。

2

rstrip去除整個字符串中的尾隨空格。如果您希望它能夠在單行上運行,則需要先使用doc.split('\n')之類的字符串將字符串分割成多行。

+2

或者只是'替換('\ n','')'。線結束不會發生在除了行尾之外的任何地方。 – user2357112

+0

@ user2357112最佳答案。 – Deneb

3

因爲你閱讀整個文檔轉換成一個字符串,它看起來像:

'a\nb\nc\nd\n' 

當您在該字符串做rstrip('\n'),只有最右邊的\n將被刪除,留下所有其它不變,因此字符串看起來像:

'a\nb\nc\nd' 

解決方案是將文件拆分成行,然後右剝離每一行。或者只是將所有新行字符全部替換爲:s.replace('\n', ''),這會給你'abcd'

1

試試這個:

with open('doc.txt') as f: 
    for line in f: 
     print line, 

說明:

  • 推薦的方式打開文件使用with,這需要在年底關閉該文件的護理
  • 可以遍歷在文件中的每一行使用for line in f
  • 現在沒有必要現在撥打rstrip(),因爲我們正在閱讀並一次打印一行
0

考慮使用replace並將'\ n'的每個實例替換爲''。這將消除輸入文本中的所有新行字符。