为什么我的脚本没有正确打印Unicode字符?

时间:2016-11-19 16:55:58

标签: python twitter unicode

我正在处理Twitter数据,我有一个包含大量推文的文件,每行一个。这些推文中的大多数都是用葡萄牙语写的,所以它们有特殊字符,如“é”,“á”等等

我正在尝试过滤文件中的停用词并对推文进行标记,但在处理完脚本后,我的脚本无法正确打印特殊字符。

示例:

  

AT_USER praconcursopúblico,tôntrandonessas agora porque empregobomáfoda

变为:

  

[u'pra',u'concurso',u'p \ xfablico',u't \ xf4',u'entrando',u'nessas',u'agora',u'porque',u' emprego',u'bom',u't \ xe1',u'foda']

为什么我在每个令牌之前都有这个“你”?为什么“ú”变成“\ xfa”?

如果没有“u”并且正确打印重音字符,我如何获得令牌?

在此gist中,您可以查看我之前,之后以及我使用的脚本的文字。

谢谢:)

2 个答案:

答案 0 :(得分:2)

你有一个清单

>>> l = [u'pra', u'concurso', u'p\xfablico', u't\xf4', u'entrando', u'nessas', u'agora', u'porque', u'emprego', u'bom', u't\xe1', u'foda']

当你打印列表时,单词看起来很奇怪

>>> print l
[u'pra', u'concurso', u'p\xfablico', u't\xf4', u'entrando', u'nessas', u'agora', u'porque', u'emprego', u'bom', u't\xe1', u'foda']

但是如果你打印出来的话,那就很好了

>>> for word in l:
...     print word
... 
pra
concurso
público
tô
entrando
nessas
agora
porque
emprego
bom
tá
foda
>>> 

当你打印一个列表时,python打印一个列表的表示,这对程序员来说很有用,可以看到对象是什么。它有括号和引号,并且......“u”告诉你它是一个Unicode字符串而不是一个常规的ascii字符串。您会看到Unicode字符的ascii转义版本,因为这是在ascii中查看这些字符的唯一方法。如果将打印的字符串评估为python命令,则甚至可以返回原始列表!

>>> l2 = eval("[u'pra', u'concurso', u'p\xfablico', u't\xf4', u'entrando', u'nessas', u'agora', u'porque', u'emprego', u'bom', u't\xe1', u'foda']")
>>> l == l2
True

一切都很好!你只是得到了列表的极客视图。

python 3在处理Unicode方面做得更好。除非你有理由坚持使用2.x,否则请移动!

答案 1 :(得分:1)

" u"在字符串告诉您有一个unicode字符串之前。