gpt4 book ai didi

python - 解码编码字符串列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:47:43 25 4
gpt4 key购买 nike

我正在处理一个发布数据集,从 xml 文件中提取数据后,我得到了一个此类列表:

['21-10-2013', ['título do artigo'],['álvaro', 'joão', 'márcio'],['teste', 'operação','manobras']]

如您所见,这些词是葡萄牙语的。为了转换为 unicode,我尝试了 Kumar McMillan 的代码,我在 farmdev.com/talks/unicode/上找到了它。这是代码:

>>> def to_unicode_or_bust(obj, encoding='utf-8'):
... if isinstance(obj, basestring):
... if not isinstance(obj, unicode):
... obj = unicode(obj, encoding)
... return obj
...

我在一个简单的字符串中尝试了代码: ab=“trabalhar com a imaginação”

输出:

>>> cd=to_unicode_or_bust(ab)
u'trabalhar com a imagina\xe7\xe3o'

如果我发出打印命令:

>>> print cd
trabalhar com a imaginação

好的,看起来没问题。但我怎样才能申请到这个名单呢?天真的尝试:

>>> lista2 = to_unicode_or_bust(lista1)
>>> print lista2
['21-10-2013', ['t\xc3\xadtulo do artigo'], ['\xc3\xa1lvaro', 'jo\xc3\xa3o', 'm\xc3\xa1rcio'], ['teste', 'opera\xc3\xa7\xc3\xa3o', 'manobras']]

我知道,这可能是一个新手问题,但是我应该怎么做才能在 lista2 中获得正确的葡萄牙语字符?

最佳答案

您拥有的函数很好,但它一次只能处理一个字符串 - 如果它传递的不是非 unicode 字符串,它只会返回它。您向它传递一个列表,它会原封不动地返回给您。

这个递归函数应该遍历每一位并用转换后的字符串重新组装它。

def convert_all(all, convert=to_unicode_or_bust):
if isinstance(all, tuple):
return tuple(convert_all(piece, convert) for piece in all)
elif isinstance(all, list):
return [convert_all(piece, convert) for piece in all]
return convert(all)

请注意,当您打印列表时,列表中的字符串将包含以 \x--\u-- 显示的 Unicode 字符-- 格式,但各个字符串将正确打印。

关于python - 解码编码字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com