我用python从NLTK下载了西班牙语文本
spanish_sents=nltk.corpus.floresta.sents()
当在终端打印句子时,相应的西班牙语字符
未渲染。例如,打印spanish_sents[1]
会产生类似u'\xe9'
的字符,如果我使用utf-8对其进行编码,如
^{pr2}$
它产生'\xc3\xa9'
并用拉丁语3编码
print [x.encode("latin3") for x in sapnish_sents[1]]
它产生'\xe9'
如何配置终端以打印这些点的字形?谢谢
Tags:
只是一个开头的话,拉丁语3或ISO-8859-3确实表示为南欧语,但它的目的是涵盖土耳其语、马耳他语和世界语。西班牙语更常用拉丁语1(ISO-8859-1或西欧语)或拉丁语9(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字符集(export LANG=en_US.ISO-8859-1
)并使用拉丁1编码我猜有一些事情发生了。首先,您要迭代一个
str
(是不是一个完整的条目?打印时会发生什么)。第二,您没有得到完整的字符,因为您正在迭代一个str
(unicode字符比ASCII字符占用更多的“空间”,所以对单个索引进行寻址看起来会很奇怪)。第三,你试图encode
,而你可能是想decode
。在试试这个:
我只是在我的终端上运行了以下内容以帮助提供上下文:
^{pr2}$您所看到的是字符串的表示形式,因为打印列表仅用于调试目的。在
要打印列表,请使用
.join
:相关问题 更多 >
编程相关推荐