函数内使用Replace()方法去除换行符失效问题求助
为什么
replace('\n', '')没起作用? 嘿,这个问题我碰到过!问题出在你对文件内容的理解上——你的文件里根本不是真正的换行符,而是字面的\和n字符组合(也就是你看到的\n是直接写在文件里的文本,不是按下回车产生的换行)。
问题根源
str.replace('\n', '')查找的是ASCII标准的换行符(LF,字符编码为10,也就是我们常说的“换行”),但你的文件里是两个独立的字符:反斜杠\和字母n。这俩凑在一起看起来像换行符的转义写法,但本质是普通文本,所以replace完全匹配不到,自然没效果。
你输出里的['This\\n\\nis...']也能佐证这一点:\\n是Python打印字符串时的转义显示,实际字符串里就是\n这两个字符,不是换行。
解决方案
根据你的需求,分两种情况处理:
情况1:直接去掉文件里的\n文本
直接替换字面的\n即可,注意在Python字符串里要把\转义成\\(因为单个\在Python里是转义符):
textfile = 'name.txt' def read_words(filename): # 用with语句自动管理文件,避免忘记关闭 with open(filename,'r') as f: message = f.read() # 替换字面的"\n"文本 a = message.replace('\\n', '') wordlist = a.split(' ') print(wordlist) read_words(textfile)
情况2:想把文件里的\n解析成真正的换行符再去掉
如果你的文件原本应该存储换行,但误存成了\n文本,可以先把转义序列解析成真正的特殊字符,再替换换行:
import codecs textfile = 'name.txt' def read_words(filename): with open(filename,'r') as f: # 解析文本中的转义序列,把"\n"转成真正的换行符 message = codecs.decode(f.read(), 'unicode_escape') a = message.replace('\n', '') wordlist = a.split(' ') print(wordlist) read_words(textfile)
内容的提问来源于stack exchange,提问作者Okeh




