2012-01-11 91 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