我可以使用.split()和csv.reader吗?

时间:2012-05-10 01:00:57

标签: python

我想创建一个基于csv 1st列的字典作为键。我可以使用.split()来执行此操作,还是csv.dictreader会自动将键从第一列中删除?

from collections import defaultdict
import csv
import sys

#import csv file and store in dictionary
dict=defaultdict(list)
file=csv.reader(open(‘sys.argv[1]’,‘rt’))
    for f in file:
        a,b,c,d=f.split()
        dict[a].append((b,c,d))
file.close()

1 个答案:

答案 0 :(得分:3)

csv.reader应该已根据您指定的分隔符拆分行。所以像这样:

csv_file = csv.reader(open(filename, "rb"), delimiter=",")
for row in csv_file:
    print row

会给你这个:

["an element", "another element", "a third element"]
["an element", "another element", "a third element"]
["an element", "another element", "a third element"]
   ....

你不应该做row.split()

还有一些事情:

1)不要覆盖python内置名称。 file是一个内置的python(就像dict)。打电话给你的读者csv_file或其他东西(并重命名你的字典)。

2)除非您计划稍后在脚本中使用defaultdict功能,否则您只需要一个好的旧常规dict

3)首先不需要将f的内容解包两次。当它只需要一个时,你将它分为两​​个步骤:

实施

myDict = {}
for row in csv_file:
    myDict[row[0]] = row[1:]