Python字符串替换无法处理换行符

5

我有一个关键字文件,我只想用逗号替换掉换行符。

print file("keywords.txt", "r").read().replace("\n", ", ")

尝试了所有的 \r\n 变体。


2
你的代码没问题。使用replace()最常见的错误是人们忘记将结果赋值给变量:应该使用s=s.replace(old, new)而不是s.replace(old, new)。 - Raymond Hettinger
7个回答

3

不要忘记,这是 Python!总是寻找简单的方法...

', '.join(mystring.splitlines())


2
我非常确定“pythonic”并不意味着“最短的一行代码”。而且,你的例子甚至没有针对一个文件运行。 - pzkpfw

2

您的代码 应该 按照书写方式运行。不过,这里有另一种方法。

让Python为您拆分这些行(for line in f)。使用open而不是file。使用with,这样您就不需要手动关闭文件。

with open("keywords.txt", "r") as f:
    print ', '.join(line.rstrip() for line in f) # don't have to know line ending!

0

我刚刚尝试了这个方法,对我有效。你的文件是什么样子的?

我的 "temp.txt" 文件长这样:

a
b
c
d
e

我的 Python 文件包含以下代码:

print file("temp.txt", "r").read().replace("\n", ", ")

这是我的输出:

>python temp_read.py
a, b, c, d, e,


0

你想要替换实际文件内容吗?像这样:

newContent = file("keywords.txt", "r").read().replace("\r", "").replace("\n", ", ")
open("keywords.txt", "w").write(newContent)

0

我刚刚遇到了同样的问题,这是解决方法:

phones = arr[8].replace("\\n", "|")

0

你写的代码在我创建的测试文件中运行良好。

你是想将结果写回文件吗?

你可以尝试在十六进制编辑器中查看输入文件以查看行结尾。


0
我也遇到过这个问题,并通过以下方法解决:
new_text = ",".join(text.split("\n"))

我的"\n"在我的单元测试(使用字符串作为输入)和集成测试(使用文件读取导入作为输入)之间的解释方式不同,所以str.replace("\n", ",")在两个测试中都无法正常工作。
编辑 => 在这两种情况下都可以使用这个方法:
text = text.replace("\\n", ",")
text = text.replace("\n", ",")

我不知道为什么文件和字符串输入之间有什么不同...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接