You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

函数内使用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

火山引擎 最新活动