4

我的函数返回一个元组,然后将其分配给变量 x 并附加到列表中。

x = (u'string1', u'string2', u'string3', u'string4')
resultsList.append(x)

该函数被多次调用,最终列表由 20 个元组组成。

元组中的字符串是 unicode,我想将它们转换为 utf-8。

一些字符串还包括非 ASCII 字符,如 ö、ä 等。

有没有办法一步将它们全部转换?

4

1 回答 1

10

使用嵌套列表推导:

encoded = [[s.encode('utf8') for s in t] for t in resultsList]

这将生成一个列表列表,其中包含 UTF-8 编码数据的字节字符串。

如果要打印这些列表,您会看到 Python 将 Python 字节字符串的内容表示为 Python 文字字符串;带引号和任何不可打印的 ASCII 代码点的字节,用转义序列表示:

>>> l = ['Kaiserstra\xc3\x9fe']
>>> l
['Kaiserstra\xc3\x9fe']
>>> l[0]
'Kaiserstra\xc3\x9fe'
>>> print l[0]
Kaiserstraße

这是正常的,因为 Python 将这些数据用于调试目的。和转义序列表示两个 UTF-8 字节 C39F(十六进制) \xc3\x9f用于对小的 ringel-es 字符进行编码。

于 2013-07-08T12:50:14.090 回答