我正在处理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中,您可以查看我之前,之后以及我使用的脚本的文字。
谢谢:)
答案 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)