我在运行下面的脚本时出现编码问题: 这是错误代码: -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
答案 0 :(得分:1)
看起来你正在使用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')
可选的错误parm默认为“strict”,如果字节无法映射到给定的编码,则会引发异常。在某些情况下,您可能希望使用“忽略”或“替换”。
有关详情,请参阅the python doc。