首页 / PYTHON / python – 结合天城文字符
python – 结合天城文字符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 结合天城文字符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1860字,纯文字阅读大概需要3分钟。
内容图文
我有类似的东西
a = "?????? ???? ??? ??"
我希望实现类似的目标
a[0] = ??
a[1] = ???
a[3] = ?
但由于?占用4个字节,而??占用8个字节,我无法直接进行.
那么可以做些什么呢?在Python中.
解决方法:
将文本分成字形簇的算法在Unicode Annex 29第3.1节中给出.我不打算在这里为你实现完整的算法,但是我将大致向你展示如何处理梵文的情况,然后你可以自己阅读附件,看看你还需要实现什么.
unicodedata module包含检测字形集群所需的信息.
>>> import unicodedata
>>> a = "?????? ???? ??? ??"
>>> [unicodedata.name(c) for c in a]
['DEVANAGARI LETTER BA', 'DEVANAGARI VOWEL SIGN I', 'DEVANAGARI LETTER KA',
'DEVANAGARI SIGN VIRAMA', 'DEVANAGARI LETTER RA', 'DEVANAGARI LETTER MA',
'SPACE', 'DEVANAGARI LETTER MA', 'DEVANAGARI VOWEL SIGN E',
'DEVANAGARI LETTER RA', 'DEVANAGARI VOWEL SIGN O', 'SPACE',
'DEVANAGARI LETTER NA', 'DEVANAGARI VOWEL SIGN AA', 'DEVANAGARI LETTER MA',
'SPACE', 'DEVANAGARI LETTER HA', 'DEVANAGARI VOWEL SIGN O']
在梵文中,每个字形簇包括一个首字母,可选的变形对(元音杀手)和字母,以及一个可选的元音符号.在正则表达式中,将是LETTER(VIRAMA LETTER)* VOWEL?您可以通过查找每个代码点的Unicode category来确定哪个是哪个:
>>> [unicodedata.category(c) for c in a]
['Lo', 'Mc', 'Lo', 'Mn', 'Lo', 'Lo', 'Zs', 'Lo', 'Mn', 'Lo', 'Mc', 'Zs',
'Lo', 'Mc', 'Lo', 'Zs', 'Lo', 'Mc']
字母是类别Lo(字母,其他),元音符号是类别Mc(标记,间距组合),virama是类别Mn(标记,非间距),空格是类别Z(分隔符,空格).
所以这是分离字形集群的粗略方法:
def splitclusters(s):
"""Generate the grapheme clusters for the string s. (Not the full
Unicode text segmentation algorithm, but probably good enough for
Devanagari.)
"""
virama = u'\N{DEVANAGARI SIGN VIRAMA}'
cluster = u''
last = None
for c in s:
cat = unicodedata.category(c)[0]
if cat == 'M' or cat == 'L' and last == virama:
cluster += c
else:
if cluster:
yield cluster
cluster = c
last = c
if cluster:
yield cluster
>>> list(splitclusters(a))
['??', '???', '?', ' ', '??', '??', ' ', '??', '?', ' ', '??']
内容总结
以上是互联网集市为您收集整理的python – 结合天城文字符全部内容,希望文章能够帮你解决python – 结合天城文字符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。