CSVをタプルやリストに読み込む
CSVをタプルやリストに読み込むにはcsv.DictReader
クラスを作成してtuple()
、list()
に渡します。空のリストとfor
は不要です。
tuple(csv.DictReader(...)) # タプルへ変換
list(csv.DictReader(...)) # リストへ変換
文字列から作成したCSVをタプルへ変換する具体例は次の通りです。
CSV文字列➞タプル変換
import csv
from pprint import pp
csv_raw = "A, B, C\n1,2,3\n4,5,6\n7,8,9".split("\n")
csv_rows = tuple(csv.DictReader(csv_raw))
pp(csv_rows)
#({'A': '1', ' B': '2', ' C': '3'},
# {'A': '4', ' B': '5', ' C': '6'},
# {'A': '7', ' B': '8', ' C': '9'})
上の出力結果が'A': '1'
であるように値は文字列として読み込まれます。JSONなどに変換する場合は読み込み後に数値へ変換してください。
csv.DictReader
クラスがtuple()
やlist()
にそのまま渡せる理由
csv.DictReader
クラスがtuple()
やlist()
にそのまま渡せるのは__iter__()
メソッドを実装するためです。そのため、csv.DictReader
クラスは内包表記、filter()
、map()
も適用できます。
import csv
from pprint import pp
csv_raw = "A, B, C\n1,2,3\n4,5,6\n7,8,9".split("\n")
csv_reader = csv.DictReader(csv_raw)
pp(tuple(d for d in csv_reader if int(d["A"]) % 2 == 0))
# ({'A': '4', ' B': '5', ' C': '6'},)