我是python的新手,我正在尝试创建一个csv解析脚本。 我将行从csv传递到列表,但目前我遇到的麻烦是我需要在每个项目中添加第一个标题行作为字典。
def parse_csv(datafile):
data = []
with open(datafile, "r") as f:
next(f) #skip headerline
for line in f:
splitLine = line.strip(',')
rowL = splitLine.rstrip('\n') #remove the newline char
data.append(rowL)
pprint(data)
return data
如果第一个标题行有字典(例如标题,名称等),我将如何传递给每个被剥离的元素?
例如{' Dict1':' data1',' Dict2':' data2' }
这可能被认为是重复的,但尝试了类似帖子的各种方式,但没有在我的案例中正常工作。
答案 0 :(得分:6)
我强烈建议您使用提供的csv库。它将为您节省大量的时间和精力。这是你想要做的:
import csv
data = []
with open(datafile, 'r') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data.append(row)
print(row['Title'], row['Name'])
在这个例子中,每一行实际上都是一个python字典。
答案 1 :(得分:2)
@GeorgiDimitrov肯定是正确的,正确的方法是使用标准库中的csv
模块,但是,如果你只是为了自我指导而这样做,那么...:< / p>
def parse_csv(datafile):
data = []
with open(datafile, "r") as f:
headers = next(f).split(',')
for line in f:
splitLine = line.split(',')
dd = dict(zip(headers,splitLine))
data.append(dd
pprint(data)
return data
这将不正确处理引用/转义的逗号,&amp; c - 绝对最好留给csv
模块的所有微妙之处: - )。