西班牙语字符未在python中显示在终端上

时间:2016-12-08 06:20:29

标签: python encoding utf-8 nltk

我使用

在python中从NLTK下载了西班牙语文本
  BarDataSet dataSet = new BarDataSet(entries, "bars");
   dataSet.setColors(ColorTemplate.MATERIAL_COLORS);

在终端中打印相应的西班牙语字符时 没有呈现。例如,打印spanish_sents=nltk.corpus.floresta.sents() 会生成spanish_sents[1]等字符,如果我使用utf-8对其进行编码,如

u'\xe9'

它生成print [x.encode("utf-8") for x in sapnish_sents[1]] 并在latin3中编码

'\xc3\xa9'

它产生print [x.encode("latin3") for x in sapnish_sents[1]]

如何配置终端打印这些点的字形?感谢

3 个答案:

答案 0 :(得分:1)

您正在查看的是字符串的表示,因为打印列表仅用于调试目的。

对于打印列表,请使用.join

print ', '.join(sapnish_sents[1])

答案 1 :(得分:1)

只是最初的评论,Latin3或ISO-8859-3确实被称为南欧,但它的目的是涵盖土耳其语,马耳他语和世界语。西班牙语通常用Latin1(ISO-8859-1或西欧)或Latin9(ISO-8859-15)编码。

我可以确认字母é具有unicode代码点U + 00E9,并且在Latin1和Latin3中都表示为'\xe9'。它在UTF8中编码为'\xc3\xc9',因此您的所有转化都是正确的。

但真正的问题我怎么能配置我的终端......?很难回答而不知道终端是什么......

  • 如果它是真正的电传打字机或没有重音字符的旧vt100:你不能(但我不认为你使用它......)
  • 如果您使用Windows控制台,请声明代码页1252(非常接近Latin1):chcp 1252并使用Latin1编码(甚至更好'cp1252'
  • 如果您在Linux或任何其他Unix或Unix上使用xterm(或任何衍生产品),请使用export LANG=en_US.UTF8声明一个utf8字符集(如果您不喜欢美国英语,请选择您自己的语言,这里有趣的部分是.UTF8)并使用UTF8编码 - 或者声明一个iso-8859-1 charset(export LANG=en_US.ISO-8859-1)并使用Latin1编码

答案 2 :(得分:0)

我的猜测是有一些事情正在发生。首先,您正在遍历strsapnish_sents[1]一个整个条目?当您打印时会发生什么)。其次,你没有获得完整的字符,因为你正在迭代str(一个unicode字符比ASCII字符占用更多的“空间”,所以寻址单个索引看起来很奇怪)。第三,当你可能想要encode时,你会尝试decode

试试这个:

 print sapnish_sents[1].decode('utf-8')

我刚在终端中运行以下内容以帮助提供上下文:

>>> a = '®†\¨ˆø' # Storing non-ASCII characters in a str is ill-advised;
                 # I do this as an example because it's what I think your question is
                 # really asking
>>> a # a now looks like a bunch of gibberish if I just output
'\xc2\xae\xe2\x80\xa0\\\xc2\xa8\xcb\x86\xc3\xb8'
>>> print a # Well, this looks normal.
®†\¨ˆø
>>> print repr(a) # Just demonstrating how the above works
'\xc2\xae\xe2\x80\xa0\\\xc2\xa8\xcb\x86\xc3\xb8'
>>> a[0] # We're only looking at one character, which is represented by all this stuff.
'\xc2' 
>>> print a[0] # But because it's not a complete unicode character, the terminal balks
?
>>> print a.decode('utf-8') # Look familiar?
®†\¨ˆø
>>> print a.decode('utf-8')[0] # Our first character!
®