我使用
在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]]
如何配置终端打印这些点的字形?感谢
答案 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'
,因此您的所有转化都是正确的。
但真正的问题我怎么能配置我的终端......?很难回答而不知道终端是什么......
chcp 1252
并使用Latin1编码(甚至更好'cp1252'
)export LANG=en_US.UTF8
声明一个utf8字符集(如果您不喜欢美国英语,请选择您自己的语言,这里有趣的部分是.UTF8
)并使用UTF8编码 - 或者声明一个iso-8859-1 charset(export LANG=en_US.ISO-8859-1
)并使用Latin1编码答案 2 :(得分:0)
我的猜测是有一些事情正在发生。首先,您正在遍历str
(sapnish_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!
®