2012-01-11 191 views
0

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

我在它下面所示的文件myfile.txt与字符串:

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

这些下划线的空间。

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

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

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

+2

我打算建议使用'lstrip()',但看起来你已经尝试过了。你可以发布你现在的代码,所以我们可以提出建议,而不必再次写它? – 2012-01-11 07:43:41

+0

请记住注意并标记出最有用的答案。 – 2012-01-13 13:01:33

回答

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() 
2

所有你需要做的是阅读逐个文件的行并删除每行的前导空格。在此之后,你可以再次参加行,你会回来没有空白原文:

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

print lines 
+0

@MartinGeisler感谢您的编辑。 – jcollado 2012-01-11 09:23:50

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

+0

嗯!显示语法错误 – 2012-01-11 09:16:33

+0

我想你必须使用没有with关键字的Python 2.4。我会重写。 – 2012-01-11 09:21:47