我的csv文件包含以下数据
val1,val2,val3
1,2,3
22,23,33
那么如何将数据转换为dict
dict1 = { 'val1': 1, 'val2': 2, 'val3': 3}
dict2 = { 'val1': 22, 'val2': 23, 'val3': 33}
fp = open('file.csv', 'r')
reader = csv.reader(fp)
for row in reader:
????
由于
答案 0 :(得分:27)
import csv
reader = csv.DictReader(open('myfile.csv'))
for row in reader:
# profit !
答案 1 :(得分:16)
创建一个像常规阅读器一样操作的对象,但将读取的信息映射到一个dict,其键由可选的 fieldnames 参数给出。 fieldnames 参数是
sequence
,其元素按顺序与输入数据的字段相关联。这些元素成为结果字典的关键。如果省略 fieldnames 参数, csvfile 第一行中的值将用作 fieldnames 。如果读取的行包含的字段多于字段名序列,则剩余数据将添加为由 restkey 的值键入的序列。如果读取的行的字段数少于字段名序列,则其余的键将采用可选 restval 参数的值。任何其他可选或关键字参数都将传递给基础reader
实例...
答案 2 :(得分:2)
通常我想在处理CSV时升级到熊猫。它为您提供了一个全新的可能性。
import pandas as pd
df=pd.read_csv('test.csv')
for index, row in df.iterrows():
d=row.to_dict()
print(d)
print("")
print( df[df.val3>10].iloc[0].to_dict() )
print( list(df[['val3']]['val3']) )
输出:
{'val1': 1, 'val2': 2, 'val3': 3}
{'val1': 22, 'val2': 23, 'val3': 33}
{'val1': 22, 'val2': 23, 'val3': 33}
[3, 33]
答案 3 :(得分:0)
使用&csv'很酷的事情。正如在其他答案中提到的那样,它可以用于读取文件(明显的用例),但也可以解析常规的csv格式化字符串。
读取csv文件的示例:
import csv
with open('my_file.csv') as f:
for line in csv.DictReader(f, fieldnames=('val1', 'val2', 'val3')):
print(line)
请注意,您可以显式传递您想要成为密钥的标头,从而可以非常轻松地使用没有标头的csv文件。
另一个用例是使用' csv'
读取常规字符串示例:
import csv
my_csv_string = 'val1, val2, val3'
my_csv_dict = next(csv.DictReader(StringIO(s), fieldnames=('key1', 'key2', 'key3')))
无论如何,csv.DictReader()
就是你需要的......
答案 4 :(得分:0)
使用此代码将您的 csv 转换为您问题中要求的字典
import csv
with open('data.csv') as file:
for i in csv.DictReader(file):
print (dict(i))