所以我有一个由我的抓取工具制作的这个疯狂的长文本文件,并且由于某种原因在链接之间添加了一些空格,如下所示:
https://example.com/asdf.html (note the spaces)
https://example.com/johndoe.php (again)
我想摆脱这一点,但保留新线。请记住,文本文件长度为4.000+行。我试图自己做,但想到我不知道如何循环文件中的新行。
答案 0 :(得分:4)
好像你不能直接编辑python文件,所以这是我的建议:
# first get all lines from file
with open('file.txt', 'r') as f:
lines = f.readlines()
# remove spaces
lines = [line.replace(' ', '') for line in lines]
# finally, write lines in the file
with open('file.txt', 'w') as f:
f.writelines(lines)
答案 1 :(得分:2)
您可以逐行打开文件并读取并删除空格 -
Python 3.x:
with open('filename') as f:
for line in f:
print(line.strip())
Python 2.x:
with open('filename') as f:
for line in f:
print line.strip()
它会从每行中删除空格并打印出来。
希望它有所帮助!
答案 2 :(得分:0)
with open('file.txt', 'r') as f:
txt = f.read().replace(' ', '')
with open('file.txt', 'w') as f:
f.write(txt)
在@LeonardoChirivì的解决方案中,当字符串足够且存储效率更高时,无需创建列表来存储文件内容。 .replace(' ', '')
操作仅在字符串上调用一次,这比遍历一个列表对每个行分别执行替换要有效。
with open('file.txt', 'r+') as f:
txt = f.read().replace(' ', '')
f.seek(0)
f.write(txt)
f.truncate()
打开文件一次会更有效。这需要在读取后将文件指针移回文件的开头,并截断在写回文件后剩余的任何可能剩余的内容。但是,该解决方案的缺点是不易阅读。