【问题标题】:a bug with csv module in pythonpython中csv模块的一个错误
【发布时间】:2015-07-20 23:13:18
【问题描述】:
import csv
with open('database.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['NAME'])

伙计们,我有一个以第一行作为索引的 csv 文件,在 linux 中,代码从 row['NAME'] 读取并仅打印列 NAME 中的名称,当我在 Windows 中运行它时,它说:

C:\Users\Desktop>python py.py
Traceback (most recent call last):
  File "py.py", line 5, in <module>
    print(row['NAME'])
KeyError: 'NAME'

为什么?

【问题讨论】:

  • cat database.csv 的输出(第一行)是什么?
  • 如果您将database.csv 作为二进制文件打开,这会改变吗? with open('database.csv', 'rb') as csvfile:
  • 您应该更改标题,因为它不是错误。
  • 从 excel 2010 保存 csv 文件会出现错误,如果我使用 linux 中的 libreoffice 将其保存为 csv,它可以正常工作,python 的版本是:windows 2.7.10 anda suse 2.7 .8.
  • cat database.csv LOC;UH;PAX;DIARA;IN;OUT;N;VALOR;ISS;TOTAL;CNPJ;RAZAO;CEP;NUMERO;COMPLEMENTO;LOGRADOURO;; 3709868;205;“拉格纳森;拉格纳”;158;08/06/2015;11/06/2015;3;R$ 474,00;R$ 14,22;R$ 488,22;00.00.000/0000- 00;SOUTH NET TURISM� BRASIL LTDA;00000-000;215;BLOCO A - 04 ANDAR;AV MARIA LEBRE AGUIAR;;ASSOCIA�O BRUIHIUH DE HIIUHIOHIJ OUHOIJES

标签: python python-2.7 csv


【解决方案1】:

如果你使用的是python 2-版本,你需要用rb打开csv,即:

with open('database.csv', 'rb') as csvfile:....

作为参考,请查看https://docs.python.org/2/library/csv.html,因为它在阅读器文档中包含有关此内容的部分。

【讨论】:

  • 根据您在上面打印出 csv 的位置的评论,您要查找的 NAME 字段在哪里?我假设以 ;; 结尾的行是定义列的索引行。
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
相关资源
最近更新 更多