在Python中去除文件中每个字符串开头的空格?

0 投票
3 回答
2533 浏览
提问于 2025-04-17 09:59

如何用 python 删除文件中每个字符串开头的空格?

我有一个文件 myfile.txt,里面的内容如下:

 _ _ Amazon.inc  
Arab emirates
 _ Zynga  
Anglo-Indian  

那些下划线代表空格。

代码需要能够逐行读取文件,并去掉每行开头的所有空格。

我试过用 lstrip,但它对多行不太管用,readlines() 也一样。

for 循环会不会更好呢?

3 个回答

1

要从 myfile.txt 读取内容并写入到 output.txt,可以使用下面的代码:

with open("myfile.txt") as input:
    with open("output.txt", "w") as output:
        for line in input:
            output.write(line.lstrip())

这样做可以确保在完成操作后关闭文件,并且每次只在内存中保留一行内容。

上面的代码在 Python 2.5 及以后的版本中可以使用,因为有了 with 这个关键词。如果你使用的是 Python 2.4,可以用下面的代码:

input = open("myfile.txt")
output = open("output.txt", "w")
for line in input:
    output.write(line.lstrip())

这适合于一些小脚本,因为文件会在最后自动关闭。如果这是一个较大的程序,你就需要像下面这样明确地关闭文件:

input = open("myfile.txt")
try:
    output = open("output.txt", "w")
    try:
        for line in input:
            output.write(line.lstrip())
    finally:
        output.close()
finally:
    input.close()

你说你已经尝试过 lstrip,但它在处理多行时没有效果。这里的“窍门”是对每一行单独使用 lstrip,就像我上面做的那样。如果你想的话,可以在这个网站上试试代码。

2

假设你的输入数据在一个叫做infile.txt的文件里,你想把这个文件的内容写入到output.txt中,最简单的方法就是使用一种叫做列表推导式的写法:

inf = open("infile.txt")
stripped_lines = [l.lstrip() for l in inf.readlines()]
inf.close()

# write the new, stripped lines to a file
outf = open("output.txt", "w")
outf.write("".join(stripped_lines))
outf.close()
4

你只需要逐行读取文件的内容,然后把每一行开头的空格去掉。之后,把这些行再合起来,你就能得到没有空格的原始文本了:

with open('myfile.txt') as f:
    line_lst = [line.lstrip() for line in f.readlines()]
    lines = ''.join(line_lst)

print lines

撰写回答