我正在处理一个发布数据集,在从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 aimaginaçã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中获得正确的葡萄牙语字符,我该怎么做?
答案 0 :(得分:2)
你拥有的功能很好,但它一次只能在一个字符串上运行 - 如果它传递的是非unicode字符串以外的东西,它只会返回它。你传递的是list
,它会在没有变化的情况下回复给你。
这个递归函数应该遍历每一位并用转换后的字符串重新组合。
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)
请注意,当您打印list
时,列表中的字符串将显示带有\x--
或\u----
格式的Unicode字符,但各个字符串将正确打印。< / p>
答案 1 :(得分:-1)
如果你有字符串本身,你可以使用以下语法:
mystring = u'سلام'
如果你没有你的'python忽略unicode base。
但是打印命令:你应该使用:
print str.decode('utf-8')
你的变量:
mystring = unicode(myvar)