【问题标题】:python csv.dictreader not readinpython csv.dictreader 不读
【发布时间】:2017-05-09 21:45:39
【问题描述】:

我正在尝试读取我之前使用 DictWriter 创建的 csv 文件,看起来还可以:

Long,Lat,Value
-4.46811978,36.71191819,21.836857418129924
-4.46829768,36.71214269,1.437288805738615
-4.46858762,36.71216232,1.4251383119025087
-4.46893456,36.71041284,1.4248025480555202
-4.46896851,36.71016468,0.00885256853534053

问题是我在尝试阅读时得到 {'/': 'h'},所以我得到一个 KeyError: 'Value',因为该字典中没有 Value 键:

with open(path,'r') as file:
    csv_file = csv.DictReader(path)
    for line in csv_file:
        print line
        values.append(line["Value"])
        lat_long.append(line["Lat"],line["Long"])
    file.close()

我已经打印了路径来验证它是正确的,它是正确的,所以我不知道如何解决这个问题。

【问题讨论】:

  • 请删除file.close():使用with 打开的文件会自动关闭。如果使用路径名创建阅读器,为什么还要打开文件?
  • 是吗?我不知道它会自动关闭它。我会改正的,谢谢

标签: python csv keyerror


【解决方案1】:

您应该使用file 而不是path 调用csv.DictReader()

如果您将path 传递给csv.DictReader()csv.DictReader() 将解析字符串path 本身,而不是位于path 的文件。

这是您的代码的正确版本:

with open(path,'r') as file:
    csv_file = csv.DictReader(file)
    for line in csv_file:
        print line
        values.append(line["Value"])
        lat_long.append(line["Lat"],line["Long"])

【讨论】:

  • 超级面子!昨天我花了 10 个小时进行编码,尽管找了将近一个小时,但我没有看到那个大错误。我应该更频繁地休息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 2015-10-17
  • 2013-12-09
  • 2011-06-14
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多