簡體   English   中英

在 Python 2.7 中替換字符串中的 '\\n'

[英]Replace '\n' in a string in Python 2.7

這是我的文件.txt:

Egg and Bacon;
Egg, sausage and Bacon
Egg and Spam;
Spam Egg Sausage and Spam;
Egg, Bacon and Spam;

我想將 newLine '\\n' 轉換為 ' $ '。 我剛用過:

f = open(fileName)
text = f.read()      
text = text.replace('\n',' $ ')
print(text)

這是我的輸出:

$ Spam Egg Sausage and Spam;

我的輸出必須是這樣的:

Egg and Bacon; $ Egg, sausage and Bacon $ Egg ...

我究竟做錯了什么? 我正在使用#-*- encoding: utf-8 -*-

謝謝你。

您的換行符可能表示為\\r\\n 為了替換它們,您應該執行以下操作:

text.replace('\r\n', ' $ ')

對於適用於類 UNIX 系統(使用\\n )和 Windows(使用\\r\\n )的便攜式解決方案,您可以使用正則表達式替換文本:

>>> import re
>>> re.sub('\r?\n', ' $ ', 'a\r\nb\r\nc')
'a $ b $ c'
>>> re.sub('\r?\n', ' $ ', 'a\nb\nc')
'a $ b $ c'

您可以使用分割線。

lines = """Egg and Bacon;
Egg, sausage and Bacon
Egg and Spam;
Spam Egg Sausage and Spam;
Egg, Bacon and Spam;"""

print(" $ ".join(lines.splitlines()))
Egg and Bacon; $ Egg, sausage and Bacon $ Egg and Spam; $ Spam Egg Sausage and Spam; $ Egg, Bacon and Spam;

或者簡單地使用 rstrip 並加入文件對象而不將所有內容讀入內存:

with open("in.txt") as f: 
    print(" $ ".join(line.rstrip() for line in f))
    Egg and Bacon; $ Egg, sausage and Bacon $ Egg and Spam; $ Spam Egg Sausage and Spam; $ Egg, Bacon and Spam;

這是比將所有文件讀入內存並使用正則表達式更有效的解決方案。 您還應該始終使用with打開您的文件,因為它會自動關閉它們。

rstrip 將刪除\\n \\r\\n等。

In [41]: s = "foo\r\n"
In [42]: s.rstrip()
Out[42]: 'foo'    
In [43]: s = "foo\n"    
In [44]: s.rstrip()
Out[44]: 'foo'
text = text.replace('\\n', '')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM