Python编码:列表到列表中包含特殊字符和数字的字符串

时间:2013-06-11 09:05:15

标签: python unicode encoding

我需要加入这样的东西:

["Círculo", 23]
["Triángulo, 25, 19, "dos"]

我看过这篇文章 - > Joining a list that has Integer values with Python

但解决方案如:

', '.join(map(str, myList)) or ', '.join(str(x) for x in list_of_ints)

对我不起作用,因为特殊字符“í”使其失败:

  

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

那么解决它的pythonic方法是什么?我不想检查类型...... THX!

3 个答案:

答案 0 :(得分:2)

检查编码我发现了一个适合我的解决方案:

 u', '.join([unicode(x.decode('utf-8')) if type(x) == type(str()) else unicode(x) for x in a])

诀窍是使用decode('utf-8')获取角色的有效8位表示。

希望这会有所帮助。

答案 1 :(得分:0)

如果您可以将列表中的字符串指定为unicode,例如:

[u"Círculo", 23]
[u"Triángulo", 25, 19, u"dos"]

那么这应该有效:

u', '.join(unicode(x) for x in list_of_ints)

假设您正在运行Python 2。

答案 2 :(得分:0)

import encodings

a=encodings.utf_16.decode(a[0])
encodings.utf_16.encode(a[0])

您是否尝试过使用编码模块?也许你会得到它与它一起工作。 但似乎没有使用utf_16编码...