处理复杂的CSV文件 [英] Handling a complex CSV file

查看:145
本文介绍了处理复杂的CSV文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个CSV文件,例如:

I have a CSV file like:

">

我想使用Python转换成字典,字典应该像这样:

I want to convert to a dictionary using Python, and the dictionary should look like:

[{'Type': ['Date'], 'Value': ['dd/mm/yyyy']}, 
 {'Type': ['Gender'], 'Value': ['Male', 'Female']},
 {'Type': ['Title'], 'Value': ['Mr.', 'Mrs.', 'Ms.']}]

目前我已经尝试了以下方法:

Currently I've tried the below:

import csv
import collections

with open('test2.csv', 'rU') as fin:
   reader = csv.DictReader(fin)

   data = []
   for row in reader:
       data.append(row)
   print data

输出为:

[{'Type': 'Date', 'Value': 'dd/mm/yyyy'}, 
 {'Type': 'Gender', 'Value': 'Male'}, 
 {'Type': '', 'Value': 'Female'}, 
 {'Type': 'Title', 'Value': 'Mr.'}, 
 {'Type': '', 'Value': 'Mrs.'}, 
 {'Type': '', 'Value': 'Ms.'}]

推荐答案

尝试一下:

import csv

data=[]
with open(fn, 'rU') as fin:
    reader=csv.reader(fin, dialect='excel')
    header=next(reader)
    for row in reader:
        di={k:[v] for k,v in zip(header, row)}
        if di[header[0]]==['']:
            data[-1][header[1]].extend(di[header[1]]) 
        else:
            data.append(di) 

>>> data
[{'Type': ['Date'], 'Value': ['dd/mm/yyyy']}, {'Type': ['Gender'], 'Value': ['Male', 'Female']}, {'Type': ['Title'], 'Value': ['Mr.', 'Mrs', 'Ms']}]

这篇关于处理复杂的CSV文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆