gpt4 book ai didi

Python:将 csv 转换为 dict - 使用标题作为键

转载 作者:行者123 更新时间:2023-12-01 21:46:16 26 4
gpt4 key购买 nike

Python:3.x

嗨。我有下面的 csv 文件,它有标题和行。行数可能因文件而异。我正在尝试将此 csv 转换为 dict 格式,并且正在为第一行重复数据。

"cdrRecordType","globalCallID_callManagerId","globalCallID_callId"
1,3,9294899
1,3,9294933

代码:

parserd_list = []
output_dict = {}
with open("files\\CUCMdummy.csv") as myfile:
firstline = True
for line in myfile:
if firstline:
mykeys = ''.join(line.split()).split(',')
firstline = False
else:
values = ''.join(line.split()).split(',')
for n in range(len(mykeys)):
output_dict[mykeys[n].rstrip('"').lstrip('"')] = values[n].rstrip('"').lstrip('"')
print(output_dict)
parserd_list.append(output_dict)
#print(parserd_list)

(通常我的 csv 列数超过 20,但我提供了一个示例文件。)

(我已经使用 rstrip/lstrip 去除了双引号。)

输出获取:

{'cdrRecordType': '1'}
{'cdrRecordType': '1', 'globalCallID_callManagerId': '3'}
{'cdrRecordType': '1', 'globalCallID_callManagerId': '3', 'globalCallID_callId': '9294899'}
{'cdrRecordType': '1', 'globalCallID_callManagerId': '3', 'globalCallID_callId': '9294899'}
{'cdrRecordType': '1', 'globalCallID_callManagerId': '3', 'globalCallID_callId': '9294899'}
{'cdrRecordType': '1', 'globalCallID_callManagerId': '3', 'globalCallID_callId': '9294933'}

这是 for 循环中 print 的输出。最终输出也是一样的。

我不知道我做错了什么。请哪位帮忙改正。

提前致谢。

最佳答案

您应该使用 the csv module 而不是手动解析 CSV 文件.

这将导致更简单的脚本,并有助于优雅地处理边缘情况(例如,标题行、引用不一致的字段等)。

import csv

with open('example.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row)

输出:

$ python3 parse-csv.py
OrderedDict([('cdrRecordType', '1'), ('globalCallID_callManagerId', '3'), ('globalCallID_callId', '9294899')])
OrderedDict([('cdrRecordType', '1'), ('globalCallID_callManagerId', '3'), ('globalCallID_callId', '9294933')])

如果您打算手动解析,可以使用以下方法:

parsed_list = []
with open('example.csv') as myfile:
firstline = True
for line in myfile:
# Strip leading/trailing whitespace and split into a list of values.
values = line.strip().split(',')

# Remove surrounding double quotes from each value, if they exist.
values = [v.strip('"') for v in values]

# Use the first line as keys.
if firstline:
keys = values
firstline = False
# Skip to the next iteration of the for loop.
continue

parsed_list.append(dict(zip(keys, values)))

for p in parsed_list:
print(p)

输出:

$ python3 manual-parse-csv.py
{'cdrRecordType': '1', 'globalCallID_callManagerId': '3', 'globalCallID_callId': '9294899'}
{'cdrRecordType': '1', 'globalCallID_callManagerId': '3', 'globalCallID_callId': '9294933'}

关于Python:将 csv 转换为 dict - 使用标题作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60406792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com