Python csv文件解析并使其dict
我有一个.csv文件试图在dict中创建它。我主要尝试了pandas和csv.DictReader,但直到现在我可以用DictReader打印数据(不是以我想要的方式)。 所以主要的问题是这个文件Python csv文件解析并使其dict,python,csv,Python,Csv,我有一个.csv文件试图在dict中创建它。我主要尝试了pandas和csv.DictReader,但直到现在我可以用DictReader打印数据(不是以我想要的方式)。 所以主要的问题是这个文件 header;data (1 column) 大约50行,之后它会像 header1;header2;header3;header4 在第50行和第50行+ data1;data2;data3;data4 etc.. 这就是我现在的代码。 谢谢您的帮助。您不能为此使用DictReader,因为
header;data (1 column)
大约50行,之后它会像
header1;header2;header3;header4
在第50行和第50行+
data1;data2;data3;data4 etc..
这就是我现在的代码。
谢谢您的帮助。您不能为此使用
DictReader
,因为它要求所有行具有相同的字段
使用csv.reader
并检查它返回的行的长度。当长度更改时,将其视为新的标头
希望文件中没有相邻的部分具有相同数量的字段,但标题不同。当节发生更改时,脚本将很难检测到
data = []
with open(filename, 'r', encoding='utf-16') as f:
r = csv.reader(f, delimiter=';')
# process first 52 rows in format header;data
for _ in range(52):
row = next(r)
data.append({row[0]: row[1]})
# rest of file is a header row followed by variable number of data rows
header = next(r)
for row in r:
if len(row) != len(header): # new header
header = row
continue
d = dict(zip(header, row))
data.append(d)
我不认为<代码> DictReader <代码>允许你在文件中间更改字段名称。是的,你是对的,因为我忘了提到在某些行中有2个以上的值。它从2个值开始,然后在大约50行之后变为4个值。它从2个值开始,有些行有3个值,然后从第52-252行变为4个值。我已经将它更改为更一般的值:每当字段数改变时,这是一个新的标题。尝试将其关闭…尝试修复它,因为这样它将始终将第1行的标题作为标题。
data = []
with open(filename, 'r', encoding='utf-16') as f:
r = csv.reader(f, delimiter=';')
# process first 52 rows in format header;data
for _ in range(52):
row = next(r)
data.append({row[0]: row[1]})
# rest of file is a header row followed by variable number of data rows
header = next(r)
for row in r:
if len(row) != len(header): # new header
header = row
continue
d = dict(zip(header, row))
data.append(d)