Python - CSV阅读器 - 无法读取所有行

时间:2017-08-23 14:42:03

标签: python csv reader

我有以下代码段

import csv

data = {}
with open('data.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, quotechar=None)
    count = 0
    for row in spamreader:
        data.update({row[0]:row[1]})
        count+=1


print(count)
print(len(data))

文件data.csv共包含234611行和2列。

输出结果为:

  

234611

     

52183

现在读者能够读取所有行但无法将它们填充到data字典中。知道如何调试这个问题吗? 此外,值得一提的是csv文件包含许多非英文字符。

2 个答案:

答案 0 :(得分:4)

Dictionary会丢弃(或者说重写)重复键的值。您确定csv文件中没有重复的条目吗?

如果要收集给定密钥的所有值,请使用defaultdict(list)

import csv
from collections import defaultdict

data = defaultdict(list)
with open('data.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, quotechar=None)
    count = 0
    for row in spamreader:
        data[row[0]].append(row[1])
        count+=1


print(count)
print(len(data))

答案 1 :(得分:1)

您可能正在向字典添加重复键(row[0])。您可以使用count或将count添加到row[0]来确保密钥是唯一的。