2017-12-20 18 views
0

DictReaderを使用してcsvファイルからdictとして最初のレコードを取得しようとしています。私はtrip_reader [0]のように最初のレコードを取得するためのいずれかの機能がありますドキュメントはリーダーオブジェクトDictReaderを使用してCSVファイルから最初のレコードを取得

with open(filename, 'r') as f_in: 
     # Use the csv library to set up a DictReader object. 
     trip_reader = csv.DictReader(f_in) 
     # Use a function on the DictReader object to read the 
     # first trip from the data file and store it in a variable. 
     for row in trip_reader: 
        pprint(row) 

を反復について話すように理解することができませんか。

+0

まさにあなたの問題は何ですか?行を.csvファイルと同じ方法で印刷する場合は、 'DictReader'の代わりに' reader'を使用してください。 – Arne

+0

'pprint'とは何ですか? 'city'と' first_trip'はどこに返されると定義されていますか? – pstatix

+0

@ArneRecknagel forループを使わずに読者から最初のレコードを取得したい。 – dataEnthusiast

答えて

0

あなたはtrip_readerを反復処理することができますので、あなたは(この場合、最初の行の)次を得るためにそれにnext()を呼び出すことができます。

with open(filename, 'r') as f_in: 
    # Use the csv library to set up a DictReader object. 
    trip_reader = csv.DictReader(f_in) 
    # Use a function on the DictReader object to read the 
    # first trip from the data file and store it in a variable. 
    row = next(trip_reader) 
    pprint(row) 
1

forループせずにCSVの最初の行を取得するには:あなたは、ヘッダーの行を持っている場合は、その上に「ジャンプ」する必要があります。もちろん、

with open(filename, 'r', newline='') as f: 
    r = csv.reader(f, delimiter=',') 
    return next(r) 

with open(filename, 'r', newline='') as f: 
    r = csv.reader(f, delimiter=',') 
    _ = next(r) # hold header row in throwaway variable 
    return next(r) 

コンテキストマネージャのnewline=''は、Python3 +(多分Python2の後のバージョン)でも使われますが、Python2.7.8以前では省略することができます。

+0

は、 'next = iter)'に優先して '_ = next(iter)'ですか? – Arne

+0

@ArneRecknagel実装に依存します。 '_'はそれらを保存するだけで、' return'時にはガベージコレクタはメモリが解放されます。それがなければ、実装は実際にヘッダを 'stdout'ストリームに送り、時々あなたはそれらを表示します。それらが表示されないようにするには '_'を使います。 – pstatix

+0

@ArneRecknagelパフォーマンスは賢明です。違いはありません – pstatix

関連する問題