我有一个csv文件
col1, col2, col3
1, 2, 3
4, 5, 6
我想从这个CSV文件创建一个字典列表。
输出为:
a= [{'col1':1, 'col2':2, 'col3':3}, {'col1':4, 'col2':5, 'col3':6}]
我该如何做到这一点?
我有一个csv文件
col1, col2, col3
1, 2, 3
4, 5, 6
我想从这个CSV文件创建一个字典列表。
输出为:
a= [{'col1':1, 'col2':2, 'col3':3}, {'col1':4, 'col2':5, 'col3':6}]
我该如何做到这一点?
csv.DictReader
:import csv
with open('test.csv') as f:
a = [{k: int(v) for k, v in row.items()}
for row in csv.DictReader(f, skipinitialspace=True)]
[{'col2': 2, 'col3': 3, 'col1': 1}, {'col2': 5, 'col3': 6, 'col1': 4}]
另一个更简单的答案:
import csv
with open("configure_column_mapping_logic.csv", "r") as f:
reader = csv.DictReader(f)
a = list(reader)
print a
print(a)
应该放在with
块之外,因为此时文件不再需要。另外,为什么不使用a = list(csv.DictReader(f))
? - pabouk - Ukraine stay strong使用csv
模块和列表推导式:
import csv
with open('foo.csv') as f:
reader = csv.reader(f, skipinitialspace=True)
header = next(reader)
a = [dict(zip(header, map(int, row))) for row in reader]
print a
输出:
[{'col3': 3, 'col2': 2, 'col1': 1}, {'col3': 6, 'col2': 5, 'col1': 4}]
很久没看到更新或相关答案,我在此回答。
df = pd.read_csv('Your csv file path')
data = df.to_dict('records')
print( data )
# similar solution via namedtuple:
import csv
from collections import namedtuple
with open('foo.csv') as f:
fh = csv.reader(open(f, "rU"), delimiter=',', dialect=csv.excel_tab)
headers = fh.next()
Row = namedtuple('Row', headers)
list_of_dicts = [Row._make(i)._asdict() for i in fh]
with open('/home/mitul/Desktop/OPENEBS/test.csv', 'rb') as infile:
header = infile.readline().split(",")
for line in infile:
fields = line.split(",")
entry = {}
for i,value in enumerate(fields):
entry[header[i].strip()] = value.strip()
data.append(entry)
嗯,当其他人以聪明的方式去做时,我采用了天真的方法来实现它。我想我的方法的好处是不需要任何外部模块,尽管它在特殊值的配置下可能会失败。这里只是作为参考:
a = []
with open("csv.txt") as myfile:
firstline = True
for line in myfile:
if firstline:
mykeys = "".join(line.split()).split(',')
firstline = False
else:
values = "".join(line.split()).split(',')
a.append({mykeys[n]:values[n] for n in range(0,len(mykeys))})
针对你的问题,我的解决方案如下:
output = []
with open("test.csv", "r") as csv_file:
data = csv_file.read().split("\n")
text = [data[i].split(",") for i in range(len(data))]
for i in range(1, len(text)) :
output.append({text[0][num]:text[i][num] for num in range(len(text[i]))})
输出为字典列表