【问题标题】:How to convert a unicode list of tuples into utf-8 with python如何使用python将元组的unicode列表转换为utf-8
【发布时间】:2013-07-08 12:48:58
【问题描述】:

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

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

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

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

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

有没有办法一步完成全部转换?

【问题讨论】:

标签: python unicode utf-8


【解决方案1】:

使用嵌套列表推导:

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 会出于调试目的提供此数据。 \xc3\x9f 转义序列表示两个 UTF-8 字节 C39F(十六进制),用于对小的 ringel-es 字符进行编码。

【讨论】:

  • 非常感谢,但是非 ASCII 字符 Kaiserstraße 变成 Kaiserstra\xc3\x9fe 怎么办
  • @user2560609:这适用于 unicode 值,任何此类值,包括非 ASCII 代码点。您的输出是 UTF8 编码字节串的 Python 字符串文字表示。
  • @user2560609:换句话说:它有效。 '\xc3\x9f' 是 Python 的转义格式,表示两个十六进制字节 C3 和 9F,这是 ß 小 ringel-es 的 UTF-8 表示。
猜你喜欢
  • 1970-01-01
  • 2018-02-15
  • 2019-07-20
  • 2020-06-07
  • 1970-01-01
  • 2011-04-18
  • 2023-03-12
  • 2011-06-05
  • 2015-05-04
相关资源
最近更新 更多