Pythonで1行のcsvデータを読み取る方法は?


94

次のように、Pythonを使用してcsvデータを読み取る例はたくさんあります。

import csv
with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  for row in reader:
    print(row)

1行のデータを読み取り、それをさまざまな変数に入力したいだけです。それ、どうやったら出来るの?私はどこでも実用的な例を探しました。

私のコードはiの値のみを取得し、他の値は取得しません

reader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in reader:
  i = int(row[0])
  a1 = int(row[1])
  b1 = int(row[2])
  c1 = int(row[2])
  x1 = int(row[2])
  y1 = int(row[2])
  z1 = int(row[2])

csvの構造は何ですか?rowリーダーを繰り返し処理しているのはいつですか。
dm03514 2013年

回答:


145

csvファイルの最初の行のみを読み取るnext()には、リーダーオブジェクトで使用します。

with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  row1 = next(reader)  # gets the first line
  # now do something here 
  # if first row is the header, then you can do one more next() to get the next row:
  # row2 = next(f)

または:

with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  for row in reader:
    # do something here with `row`
    break

38

次のような最初の行だけを取得できます。

with open('some.csv', newline='') as f:
  csv_reader = csv.reader(f)
  csv_headings = next(csv_reader)
  first_line = next(csv_reader)

2
「... csv_reader = csv.reader(F):おそらく、それをfとして、 "オープン( 'csv_file'、 'R')と"を追加するのは良いです
Sanchit

23

Pandasライブラリを使用して、巨大なデータセットから最初の数行を読み取ることができます。

import pandas as pd

data = pd.read_csv("names.csv", nrows=1)

nrowsパラメーターで読み取る行数を指定できます。


13

Pythonドキュメントから:

モジュールは文字列の解析を直接サポートしていませんが、簡単に実行できます。

import csv
for row in csv.reader(['one,two,three']):
    print row

文字列データをシングルトンリストにドロップするだけです。


8

csvファイルの任意の行を取得する簡単な方法

import csv
csvfile = open('some.csv','rb')
csvFileArray = []
for row in csv.reader(csvfile, delimiter = '.'):
    csvFileArray.append(row)
print(csvFileArray[0])

3
これをpython3で機能させるには、「rb」の「b」を削除するだけです
RickyAvina18年

1
これは、実際にはがなくても機能しdelimiter='.'ます。
suvtfopw

1
ポスターの質問に答えるには、のbreak後にcsvFileArray.append(row)を追加するだけで、最初の行だけが読み取られます。
StratusBaseLLC19年

5

参考までforに、最初の行を取得した後にループを使用して、ファイルの残りの部分を取得できます。

with open('file.csv', newline='') as f:
    reader = csv.reader(f)
    row1 = next(reader)  # gets the first line
    for row in reader:
        print(row)       # prints rows 2 and onward

3

行の範囲(この場合は4行目から7行目)を印刷するには

import csv

with open('california_housing_test.csv') as csv_file:
    data = csv.reader(csv_file)
    for row in list(data)[4:7]:
        print(row)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.