Python 获得汉字笔画
生活随笔
收集整理的這篇文章主要介紹了
Python 获得汉字笔画
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
通過unihan的文件來實(shí)現(xiàn)。
只要是unihan中有kTotalStrokes字段,獲取其筆畫數(shù)。
Hash也是非常簡(jiǎn)單清楚的,但想到這些unicode其實(shí)會(huì)有一個(gè)分布規(guī)律,就記錄了一下,
利用此性質(zhì)通過數(shù)組方式來獲取筆畫。
記錄了一下unicode的范圍
start: [13311, 19968, 63744, 131072, 173824, 177984, 178208, 194995] end : [19893, 40917, 64045, 173782, 177972, 178205, 183969, 194998]總共包括80682個(gè)存在筆畫數(shù)的unicode碼,包含CJKV。
64045-131072中間都沒有此字段,就分了兩部分。
此處使用python3 Demo實(shí)現(xiàn),原理非常簡(jiǎn)單:使用數(shù)組保持筆畫,將unicode映射到數(shù)組index,即可獲取對(duì)應(yīng)筆畫數(shù)
def get_stroke(c):# 如果返回 0, 則也是在unicode中不存在kTotalStrokes字段strokes = []with open(strokes_path, 'r') as fr:for line in fr:strokes.append(int(line.strip()))unicode_ = ord(c)if 13312 <= unicode_ <= 64045:return strokes[unicode_-13312]elif 131072 <= unicode_ <= 194998:return strokes[unicode_-80338]else:print("c should be a CJK char, or not have stroke in unihan data.")# can also return 0strokes_path: https://github.com/helmz/Corpus/blob/master/zh_dict/strokes.txt
"按照unicode順序排列的筆畫數(shù)"
轉(zhuǎn)載于:https://www.cnblogs.com/Comero/p/8997585.html
總結(jié)
以上是生活随笔為你收集整理的Python 获得汉字笔画的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 于的繁体字有几种写法_“二”的繁体字有几
- 下一篇: eplan 2.7安装过程中multik