2

我正在使用 Python 中的电子表格 API 从 Google 电子表格中提取数据。我可以使用 for 循环在命令行上打印电子表格的每一行,但某些文本包含符号,例如摄氏度符号(小圆圈)。当我在命令行上打印这些行时,我想将它们写入文件。但是当我这样做时,我会得到不同的 unicode 错误。我尝试通过手动解决它,但有太多:

current=current.replace(u'\xa0',u'')
current=current.replace(u'\u000a',u'p')
current=current.replace(u'\u201c',u'\"')
current=current.replace(u'\u201d',u'\"')
current=current.replace(u'\u2014',u'-')

我该怎么做才不会出错?例如

UnicodeEncodeError:'ascii' 编解码器无法在位置 1394 编码字符 u'\xa0':序数不在范围内(128)

current=current.replace(u'\u0446',u'u')
4

3 回答 3

5

你想从它所在的任何编码中解码它:

decoded_str = encoded_str.decode('utf-8')

有关如何处理 unicode 字符串的更多信息,您应该查看http://docs.python.org/howto/unicode.html

于 2011-12-17T09:01:49.117 回答
0
import unicodedata
decoded = unicodedata.normalize('NFKD', encoded).decode('UTF-8', 'ignore')

我不太确定在这种情况下是否需要规范化。此外,该忽略选项意味着您可能会丢失一些信息,因为解码错误将被忽略。

于 2011-12-17T09:18:43.000 回答
-1
''.join(c for c in current if ord(c) < 128)
于 2011-12-17T09:02:45.740 回答