错误打印奇怪字符
我真是搞不懂我哪里出错了。
import urllib
import csv
with open("mydb.txt", 'rb') as f:
readr = csv.reader(f, delimiter = ",", quotechar="'")
for row in readr:
mylist = []
for i in row:
code=urllib.unquote(i)
mylist.append(code)
print mylist
问题是我总是得到一些这样的东西:
['S\xc3\xa3o Desid\xc3\xa9rio', 'BA', 'Convencional', '1759', '-12.52332', '-45.59509']
这个 'S\xc3\xa3o Desid\xc3\xa9rio'
是什么?它应该是 São Desidário。我要怎么才能修复它呢?
1 个回答
0
你现在打印的是列表这个对象本身,而不是它里面的内容。试着用
str.join
来把列表格式化成你想要的样子。你可以考虑使用“unicode三明治”的方法(外面是字节,里面是unicode)。在输入的时候就把所有内容转换成
unicode
,然后在输出的时候再转换成字节。
这个程序可能适合你:
import urllib
import csv
with open("mydb.txt", 'rb') as f:
readr = csv.reader(f, delimiter = ",", quotechar="'")
for row in readr:
mylist = []
for i in row:
i = i.decode('utf-8')
code=urllib.unquote(i)
mylist.append(code)
print type(code),code
print u','.join(mylist).encode('utf-8')