如何删除python
文件中每个字符串开头的空格?
我有一个文件myfile.txt
,其中包含如下所示的字符串:
_ _ Amazon.inc
Arab emirates
_ Zynga
Anglo-Indian
那些下划线是空格。
代码必须以一种必须遍历文件的每一行的方式,并在一行的开头删除所有这些空格。
我已尝试使用lstrip
,但这不适用于多行和readlines()
。
使用for
循环可以让它更好吗?
答案 0 :(得分:2)
假设您的输入数据位于infile.txt中,并且您想将此文件写入output.txt,最简单的方法是使用list comprehension:
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()
答案 1 :(得分:2)
您需要做的就是逐个读取文件的行并删除每行的前导空格。之后,您可以再次加入这些行,然后您将返回没有空格的原始文本:
with open('myfile.txt') as f:
line_lst = [line.lstrip() for line in f.readlines()]
lines = ''.join(line_lst)
print lines
答案 2 :(得分: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())
这将确保您在完成文件后关闭文件,并确保您一次只在内存中保留一行。
由于with
关键字,上述代码适用于Python 2.5及更高版本。对于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
。如果需要,您可以尝试使用代码online。