2013-07-05 3 views
6

CSVファイルの2行目をすべて読み込み、新しいファイルに出力しようとしています。残念ながら私は削除することができない空白の行を取得しています。すべての2行目を読み込んで新しいファイルに出力する

lines = open('old.csv', "r").readlines()[::2] 
file = open('new.csv', "w") 
n = 0 
for line in lines: 
    n += 1 
    if ((n % 2) == 1): 
      print >> file, line 

私が使用していたコードは、単純にその実際には2行ごと場合かを決定するためにnのmodolus値を調べることです。私はまだstrip()rstrip()で試していますが、まだ空白行があります。

+0

あなたはすでに、 'readlines()[:: 2]' –

答えて

11

あなたの質問への答えでは、あなたの空白行から来ている:そのようなprintを使用して

print >> file, line 

すると、自動的に改行を出力し、どちらかsys.stdout.writeを使用するか、改行文字を抑制するために末尾にカンマを使用し、例えば:

print >> file, line, 

とにかく、この全体的にアプローチするより良い方法は、のためにitertools.isliceを使用することです

し、必要であれば、そのからすべての第二を取り、最初の空白行をフィルタリング...

non_blanks = (line for line in fin if line.strip()) 
fout.writelines(islice(non_blanks, None, None, 2)) 

はるかに便利で柔軟な弾性と、そのようなで約いじくるより。

1

csvファイルのpythonライブラリを見てみてください。それはかなり包括的で、あなたがよりきれいにするために探していることをするのに役立ちます。

1

勧告は:少しあなたのコードをクリーンアップするために、そして手動でインクリメントし、カウンタ変数、使用を宣言する必要性を取り除く:列挙中(line_index、ライン)のための

(ライン): を。 ..

関連する問題