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

时间:2012-01-11 07:38:19

标签: python regex for-loop toolstrip

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

我有一个文件myfile.txt,其中包含如下所示的字符串:

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

那些下划线是空格。

代码必须以一种必须遍历文件的每一行的方式,并在一行的开头删除所有这些空格。

我已尝试使用lstrip,但这不适用于多行和readlines()

使用for循环可以让它更好吗?

3 个答案:

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