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

2024-09-26 22:55:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个基于csv第一列作为键的字典。我可以使用.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()

Tags: andcsvstoreinfromimport字典sys
1条回答
网友
1楼 · 发布于 2024-09-26 22:55:02

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:]

相关问题 更多 >

    热门问题