在 Python 中混合使用不常见的字符
Using a mix of uncommon characters in Python
我在 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(变音符号点)?
有没有人有过这种角色组合的经验?人们是否已经开发出一种通用的方式来处理这些角色?
目前,每当我尝试对 u'ḃ' 使用变音点字符时,我都会收到以下错误:
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>
显示的问题是打印的字符不受您的代码页 (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')
ḃ
我在 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(变音符号点)?
有没有人有过这种角色组合的经验?人们是否已经开发出一种通用的方式来处理这些角色?
目前,每当我尝试对 u'ḃ' 使用变音点字符时,我都会收到以下错误:
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>
显示的问题是打印的字符不受您的代码页 (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')
ḃ