答案 0 :(得分:1)
您可以在python中使用pandas库来处理:
这是一个通用的可重复示例(您需要安装pandas)
from StringIO import StringIO
import pandas as pd
data = """
col1|col2
1|2
21|2
14|2
12|42
10|2
1|27
"""
# StringIO(data) to simulate a csv file
# replace it with the name of your csv file
df = pd.read_csv(StringIO(data), sep="|")
print(df.to_dict(orient="records"))
输出如下:
[{'col2': 2, 'col1': 1}, {'col2': 2, 'col1': 21}, {'col2': 2, 'col1': 14}, {'col2': 42, 'col1': 12}, {'col2': 2, 'col1': 10}, {'col2': 27, 'col1': 1}]
对于您的具体情况,您需要执行以下操作
import pandas as pd
df = pd.read_csv("zinc3.csv", sep="|")
print(df.to_dict(orient="records"))
答案 1 :(得分:0)
如果我理解正确,请给出一个文件:
# test.csv
1,2,3
a_foo,b_foo,c_foo
a_bar,b_bar,c_bar
您可以使用数字标题创建字典,如下所示:
import csv
import collections as ct
with open("./test.csv") as f:
reader = csv.DictReader(f)
dd = ct.defaultdict(list)
for row in reader:
for k, v in row.items():
dd[int(k)].append(v)
dd
输出
defaultdict(list,
{1: ['a_foo', 'a_bar'],
2: ['b_foo', 'b_bar'],
3: ['c_foo', 'c_bar']})
您必须替换文件名。 DictReader
为每一行生成一个字典,其中键是标题,值是每列的后续项。这里我们通过将值附加到defaultdict
来重建字典。键(假定数字)将转换为整数。
对于小文件,您可以使用列表解析来压缩此代码:
with open("./test.csv") as f:
reader = csv.DictReader(f)
dd = ct.defaultdict(list)
[dd[int(k)].append(v) for row in reader for k, v in row.items()]
dd