2012-01-11 14 views
0

pythonのファイル内のすべての文字列の先頭にある空白を削除するにはどうすればよいですか?Pythonでファイル内のすべての文字列の先頭にある空白を削除しますか?

それに下図のように私は、文字列を含むファイルmyfile.txtを持っている:

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

これらのアンダースコアはスペースです。

コードは、ファイルの各行を通過し、それらの空白をすべて行頭で削除する必要があるようにする必要があります。

私はlstripを使用しようとしましたが、それは複数行では機能しません。readlines()もあります。

forループを使用するとより効果的ですか?

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

私は 'lstrip()'の使用を提案しようとしていましたが、すでに試みているようです。あなたが今作成したコードを投稿して、もう一度書く必要なく、提案をすることはできますか? –

+0

upvoteし、最も有用な答えを受け入れたことを覚えておいてください。 –

答えて

2

ご入力データがinfile.txtであると仮定すると、あなたはOUTPUT.TXTするには、このファイルを書きたい、それがlist comprehension使用するのが最も簡単です1行ずつファイルの行を削除し、行ごとに先頭の空白を削除します。その後、再度行に参加することができますし、空白なしで、元のテキストが返されます:

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

print lines 
2

すべてを行う必要が読まれる:

+0

@MartinGeisler編集をありがとう。 – jcollado

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

それを使用するにはあなたがそれらを完了した後にファイルを閉じることを確認し、一度に1つの行だけをメモリに保持するようにします。

上記のコードは、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

hmmm!構文エラー –

+0

を表示します。withキーワードを持たないPython 2.4を使用する必要があります。私は書き直すでしょう。 –

関連する問題