在Python中去除文件中每个字符串开头的空格?
如何用 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