使用Python 3.x删除文本文件中的所有空格

时间:2017-04-17 07:34:02

标签: python web-crawler

所以我有一个由我的抓取工具制作的这个疯狂的长文本文件,并且由于某种原因在链接之间添加了一些空格,如下所示:

https://example.com/asdf.html                                (note the spaces)
https://example.com/johndoe.php                              (again)

我想摆脱这一点,但保留新线。请记住,文本文件长度为4.000+行。我试图自己做,但想到我不知道如何循环文件中的新行。

3 个答案:

答案 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()

打开文件一次会更有效。这需要在读取后将文件指针移回文件的开头,并截断在写回文件后剩余的任何可能剩余的内容。但是,该解决方案的缺点是不易阅读。