1

これがばかげた質問である場合、私自身で正しい答えを見つけられなかったために私に嫌がらせをしてください。各行のデータを含むCSV形式のファイルを読み込もうとしていますが、各行はコンマで終了しています。このような:

-1,
-1,
1,
1,

PythonのCSV関数を使用しようとすると、次のコードを使用します。

with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row

これは以下を出力します:

['-1', '']
['-1', '']
['1', '']
['1', '']

各行の空の文字を無視してほしい。何かアドバイスはありますか?

4

2 に答える 2

5

各行の最後の要素を無視します。

with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row[:-1]

または、各行をdictに変換します。

columns = ['value']
with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        rec = dict(zip(columns, row))
        print rec

プリント

{'value': '-1'}
{'value': '-1'}
{'value': '1'}
{'value': '1'}
于 2012-07-16T11:49:17.343 に答える
2

@eumiroの答えで行きます。

にはlineterminator=オプションがありますcsv.readerが、現時点では無視されているようです...だから、やめましょう。

末尾のフィールド区切り文字を表示する必要が ない場合は、次のようにフィルターを記述します。csv.reader

def remove_last_char(fileobj):
    for line in fileobj:
        yield line.strip()[:-1]

with open(waveform, 'rb') as f:
    reader = csv.reader( remove_last_char(f) )
    for row in reader:
        print row[:-1]
于 2012-07-16T11:58:25.783 に答える