JSON 和 CSV 的 Python 编码问题

标签 python json csv utf-8

当我运行下面的脚本时遇到编码问题: 这是错误代码: -UnicodeEncodeError:“ascii”编解码器无法对位置 9 中的字符 u'\xe9' 进行编码:序号不在范围内(128)

这是我的脚本:

import logging
import urllib
import csv
import json
import io
import codecs

with open('/home/local/apple.csv',
          'rb') as csvinput:
    reader = csv.reader(csvinput, delimiter=',')
    firstline = True
    for row in reader:
        if firstline:
            firstline = False
            continue

        address1 = row[0]
        print row[0]
        locality = row[1]
        admin_area = row[2]
        query = ' '.join(str(x) for x in (address1, locality, admin_area))
        normalized = query.replace(" ", "+")
        BaseURL = 'http://localhost:8080/verify?country=JP&freeform='
        URL = BaseURL + normalized
        print URL
        data = urllib.urlopen(URL)
        response = data.getcode()
    print response

        if response == 200:
            file= json.load(data)
        print file
        output_f=open('output.csv','wb')
        csvwriter=csv.writer(output_f)
            count = 0
            for f in file:
        if count == 0:
            header= f.keys()
            csvwriter.writerow(header)
            count += 1
        csvwriter.writerow(f.values())
        output_f.close()
        else:
            print 'error'

谁能帮我解决这个问题,这真的很烦人。我需要编码为utf8

最佳答案

看起来您使用的是Python 2.x,而不是Python的标准open,而是使用codecs.open,您可以选择传递要使用的编码以及出现错误时要执行的操作。在 Python 3 中不再那么困惑,标准 Python open 可以做到这一点。

因此,在您要打开的两行中,执行以下操作:

with codecs.open('/home/local/apple.csv',
      'rb', 'utf-8') as csvinput:

output_f = codecs.open('output.csv','wb', 'utf-8')

可选的错误参数默认为“strict”,如果字节无法映射到给定的编码,则会引发异常。在某些情况下,您可能需要使用“忽略”或“替换”。

参见the python doc了解更多信息。

关于JSON 和 CSV 的 Python 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38515447/

相关文章:

mysql - 将时间序列数据链接到关系数据库中的记录

java - 从 JSON API 获取数据并循环放入 CSV

python - 在 Jupyter iPython Notebook 中使用 matplotlib 绘制图形

python - URL 附加到 WSGI 脚本的路径,为什么?

php - 使用文件下载将数据从数据库导出到csv

javascript - 将 Json 日期字符串转换为 JavaScript 日期对象

javascript - SyntaxError : Unexpected token/. .. Blueimp jQuery 文件上传

python - 在 python 中为 insert() 编写更快的实现

python - 使用 group by 函数进行字符串模式聚合

c# - 序列化为 JSON(使用 Json.Net),同时忽略继承的成员