错误打印奇怪字符

0 投票
1 回答
1672 浏览
提问于 2025-04-18 06:41

我真是搞不懂我哪里出错了。

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
  1. 你现在打印的是列表这个对象本身,而不是它里面的内容。试着用 str.join 来把列表格式化成你想要的样子。

  2. 你可以考虑使用“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')

撰写回答