0

次の形式の csv ファイルがあります。

    x1   x2    x3
    1     1     1
    2     2     2
    3     3     3
    4     4     4
    5     5     5

このファイルの最初の列だけにアクセスする方法を教えてください。

4

2 に答える 2

3

名前で列にアクセスするには(あなたdelimiterが実際にそうであるかどうかはわかり' 'ませんが、それをに変更できます','):

import csv
with open('data.csv', 'rb') as f:
    r = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
    print [row['x1'] for row in r]

['1', '2', '3', '4', '5']
于 2013-05-27T20:44:57.420 に答える
1

csvモジュールを使用せずに読むことができます:

with open('data.csv') as fobj:
    next(fobj)
    x1 = [line.split(None, 1)[0] for line in fobj]
 print x1 

結果:

['1', '2', '3', '4', '5']

with、デデントするとすぐにファイルが閉じられることを保証してファイルを開きます。私たちの場合、print x1. Python では、開かれたファイル (ここfobjでは ) はイテレータです。nextリスト内包表記を使用して、最初の行を消費し、各行の最初のエントリを抽出します。.split(None, 1)スペース、タブ、改行などのあらゆる種類の空白で分割し、分割を最初の列に制限します。これは大きなファイルの場合はパフォーマンスが向上する可能性がありますが、ここでは問題になりません。プレーン.split()も機能します。リストの[0]最初の要素をフェッチします。

数値を int に変換するバリエーション:

with open('data.csv') as fobj:
    next(fobj)
    x1 = [int(line.split(None, 1)[0]) for line in fobj]
 print x1 

結果:

[1, 2, 3, 4, 5]

結論: このcsvモジュールは優れていますが、Python は非常に強力であるため、多くの場合、Python がなくても実行できます。ファイルの内容が多少不規則で、csvチョークが詰まる場合は、常に「手動で」行う方法を知っておくとよいでしょう。

于 2013-05-28T00:16:18.907 に答える