我一直在尝试对输入进行编码以使其为API请求做好准备,并且urllib.quote可以很好地处理字符串,并按照utf-8的方式对其进行编码,但是当它来自csv时文件,它以API请求无法识别的方式对其进行编码。
# -*- coding: utf-8 -*-
import urllib
r = "Handøl Sweden"
print urllib.quote(r)
返回正确的格式:
Hand%C3%B8l%20Sweden
鉴于:
# -*- coding: utf-8 -*-
import urllib
import csv
CityList = []
with open ('SiteValidate4.csv','rb') as csvfile:
CityData = csv.reader(csvfile)
for row in CityData:
CityList.append(row[12])
r = row[12]
print r
print urllib.quote(r)
返回:
Handøl Sweden
Hand%F8l%20Sweden
是否有任何修复程序可以将.csv文件的输入编码为正确的格式?
答案 0 :(得分:2)
您的CSV文件已编码为CP-1252,您必须将其重新编码为UTF-8:
r = r.decode('cp1252').encode('utf8')
您的普通Python代码使用的是UTF-8 bytes ;如果您的代码编辑器确实将数据保存为您的coding: utf-8
标题所暗示的UTF-8。
在Python源文件中添加PEP 263标题并不会使您从文件UTF-8数据中读取的所有数据神奇地生成;它仍然需要使用该文件的正确编解码器进行解码。