使用 Python 将文本文件中的空格转换为换行符
Posted
技术标签:
【中文标题】使用 Python 将文本文件中的空格转换为换行符【英文标题】:Convert spaces to newlines in text file using Python 【发布时间】:2019-12-14 16:50:13 【问题描述】:我有一个如下所示的文本文件:
15.9 17.2 18.6 10.5
我想用 Python 编辑这个文件,使它看起来像这样:
15.9
17.2
18.6
10.5
这意味着我需要用换行符替换空格字符串并保存文本。
我试过了,但它不起作用:
f = open("testfile.txt", "w")
for line in f:
if ' ' in line:
line2 = line.replace(' ' , '\n')
print(line2)
for i in line2:
f.write(line2(i))
f.close
line2
的打印已经在工作,但我没有得到一个新的文本文件,其中空格被换行符替换。
如何解决问题并产生所需的输出?
【问题讨论】:
首先,你没有f.close()
你的文件。其次,我相信你可以直接写f.write(line2)
这行,你不需要重复它。
另外,您有两个单独的 for 循环,在第一个 for 循环中,您不断覆盖 line2
。所以唯一被写入的 line2 是循环中的最后一个..
Read and overwrite a file in Python的可能重复
【参考方案1】:
with open("testfile.txt", "r") as r:
with open("testfile_new.txt", "w") as w:
w.write(r.read(.replace(' ' , '\n'))
【讨论】:
请注意,这会将整个文件吞入内存。此外,您可以使用with open('testfile.txt', 'r') as r, open('testfile_new.txt', 'w') as w:
并避免阻塞。还有一个语法错误:r.read(.replace(' ' , '\n')
应该是r.read().replace(' ', '\n')
。考虑解释为什么 with
... 优于 open()
和/或提供一些关于 OP 在他们的代码尝试中做错了什么。
那行不通!!!它会创建一个新文件,这不是 OP 想要的【参考方案2】:
试试这样吧
f = open("testfile.txt", "r")
text=f.read()
f.close()
f=open("testfile.txt", "w+")
text2=''
if ' ' in text:
text2 = text.replace(' ' , '\n')
print(text2)
f.write(text2)
f.close()
【讨论】:
【参考方案3】:您可以尝试使用字符串替换:
string = string.replace('\n', '').replace('\r', '')
首先: f.close() 不存在。
其次:试试上面的代码。它会将空格替换为新行。
【讨论】:
你也可以尝试不同的组合比如string.replace('\r', ' ' ).replace('\n', ' ')【参考方案4】:示例:
with open("file1.txt", "r") as read_file:
with open("file2.txt", "w") as write_file:
write_file.write(read_file.read().replace(" ", '\n'))
file1.txt 的内容:
15.9 17.2 18.6 10.5
file2.txt 的内容:
15.9
17.2
18.6
10.5
注意:
或者您可以使用split
和join
方法代替替换。
write_file.write("\n".join(read_file.read().split()))
【讨论】:
【参考方案5】:将str.split
与str.join
一起使用
例如:
with open("testfile.txt", "r") as infile:
data = infile.read()
with open("testfile.txt", "w") as outfile:
outfile.write("\n".join(data.split()))
【讨论】:
以上是关于使用 Python 将文本文件中的空格转换为换行符的主要内容,如果未能解决你的问题,请参考以下文章
使用python如何摆脱从网站上抓取的文本中的尾随空格[重复]
如何在文本文件中的换行符后抓取文本不清除空格,制表符[关闭]