在Python中混合使用不常见的字符

时间:2018-03-08 17:22:29

标签: python character-encoding text-analysis python-2.5 non-english

我正在使用Python进行文本分析,我正在研究一系列可追溯到6世纪到14世纪的爱尔兰语文本,这意味着我可以在排序单词时考虑到各种正字形变体。列表。

我想对一个列表进行排序,该列表考虑了不同时期的不同语法形式的字符(例如fada,séimhiú和úru)的核心词,所以我的自定义字母将如下所示:

“a,á,b,ḃ,bh,mb,c,ċ,ch,gc,d,ḋ,dh,nd,e,é,f,ḟ,fh,bhf,g,ġ,gh, ng,h,i,í,l,m,ṁ,mh,n,o,ó,p,ṗ,ph,bp,r,rh,s,ṡ,sh,t,ṫ,th,ts,dt, u,ú,j,k,q,v,w,x,y,z“

我可以处理带有Unicode编码的fada(重音字母),例如u'á',但是我很难找到一种方法来处理旧式úru(变音符号点)?

有没有人有这种混合角色的经验?人们是否有一种共同的方式来发展这些角色?

目前,当我尝试使用变音符号字符时,我收到以下错误:

Traceback (most recent call last):
File "csv_generator.py", line 44, in <module>
print u'ß©â'
File "C:\Users\Charlie\Anaconda2\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u1e03' in 
position 0: character maps to <undefined>   

1 个答案:

答案 0 :(得分:2)

显示的问题是打印代码页不支持的字符(cp850)。你可以很好地操作Unicode字符串...它只是一个显示问题。 Python 3.6+通过绕过代码页并使用Windows Unicode API进行打印来解决此问题:

Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('\u1e03')
ḃ

如果您无法切换到更高版本的Python,是否可以切换到支持UTF-8的IDE?使用pywin32模块中的PythonWin的示例(我安装了Python 2.7)。

PythonWin 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32.
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information.
>>> print(u'\u1e03')
ḃ