python - KeyError,与 ANSI 与 UTF-8 编解码器相关吗?

标签 python python-2.7

我是 python 编程新手,所以我确信我的代码与“pythonic”相反。

我的目标是从服务器获取一个Excel文件,打开它,将文件中的数据写入到一个新文件中。接下来,我打开该文件并使用 dictReader 打印文件中的几列。首先,我编写了一个脚本来打开 Excel 文件并打印列。我能够实现这一目标。现在,我将添加下一步:获取文件,将其写入本地文件,然后打开它。

我收到以下错误,我在发布之前进行了大量研究:

  File "request.py", line 20, in <module>
    if line['Change'] == ticket_ID:
KeyError: 'Change'

下面是我的代码:

import csv
import sys
import urllib2

data = urllib2.urlopen("URL-HERE")

new_file = open("c:\\file-here", "w")
for fields in data:
    new_file.write(fields)
new_file.close()

test_file = 'getrequest6.csv'

csv_file = csv.DictReader(open(test_file, 'r'))

# ticket_ID = sys.argv[1]
ticket_ID = "RMSDB00010243"

for line in csv_file:
    if line['Change'] == ticket_ID:
        change_col = line['Change']
        review_col = line['Review']
        phase_col = line['Phase']
        print change_col, review_col, phase_col

我发现我从服务器手动下载的文件是 ANSI 编解码器。当我打开该文件时,它会起作用。我创建和写入的新文件 (getrequest6) 是一个 UTF-8 编解码器。我假设这就是 KeyError 的原因,因为当我将数据从 getrequest6 文件复制并粘贴到 ANSI 文件时,上面的代码可以正常工作。

如有任何帮助,我们将不胜感激。我搜索了编解码器类,但我不明白它。

最佳答案

如果问题出在源 csv 文件中,某些行缺少“Change”,那么您可以做的(通常也是一个很好的做法)是检查字典中该键的可用性:

# ...
if 'Change' in line and line['Change'] == ticket_id:
    # the rest

关于python - KeyError,与 ANSI 与 UTF-8 编解码器相关吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122442/

相关文章:

python - 绘制点之间的连接线问题

python - Pip 相当于 Bundler 本地覆盖

python-2.7 - 安装pocketsphinx Python时找不到Swig

python - 返回由字符串元素及其长度组成的对列表 - Python

Python 程序查找 .txt 文件中最常见的单词

android - Kivy 应用程序在设备上运行时不使用 VKeyboard

python - 将多个值的元组列表转换为 Python 中的字典

python - 直方图中的 Matplotlib 2.0 条纹

python - 从子类访问 python @property 的值

python - Tanh-sinh求积数值积分法收敛到错误值