正确打印奇怪的人物

时间:2014-05-15 17:44:49

标签: python string unicode utf-8 decode

对于我的生活,我无法弄清楚我做错了什么

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ãoDesidário。我该如何解决?

1 个答案:

答案 0 :(得分:0)

  1. 您正在打印列表对象而不是其成员。尝试使用str.join根据自己的喜好格式化列表。

  2. 您应该考虑" unicode sandwich"方法("外部字节,内部unicode")。输入后立即将所有输入转换为unicode,并在输出时将其转换为编码字节。

  3. 此计划可能适合您:

    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')