之前工作需要將客戶名字按筆畫排序,因此寫了乙個筆畫排序的工具,話不多說,上**
"""漢字筆畫順序相關
>>> pprint(p)[,,
,,,]
>>>
>>> for i in p:
... i['order'] = stroke.get_stroke_order(i['name'])
...>>> pprint(p)[,,
,,,]
>>> q = stroke.sort_by_stroke(p, lambda x: x['order'])
>>> pprint(q)[,,
,,,]
"""import functools
import itertools
import math
import string
from typing import callable, iterable
class stroke:
"""漢字筆畫排序"""
@classmethod
def get_stroke_order(cls, chars: str):
"""獲取排序"""
return tuple(cls.stroke.get(i, math.inf) for i in chars)
@classmethod
def compare(cls, a: tuple, b: tuple):
for a_i, b_i in itertools.zip_longest(a, b, fillvalue=0):
if a_i < b_i:
return -1
elif a_i > b_i:
return 1
else:
pass
return 0
@classmethod
def compare_by_stroke(cls, x, y, key: callable):
a = key(x)
b = key(y)
return cls.compare(a, b)
@classmethod
def sort_by_stroke(cls, obj: iterable, key: callable):
cmp = functools.partial(cls.compare_by_stroke, key=key)
return sorted(obj, key=functools.cmp_to_key(cmp))
stroke =
漢字的奧秘 獲取漢字的筆畫數
想想看,如果你需要在 裡面得到漢字的筆畫數,該怎麼辦呢?每到這個時候,我們就一直感慨咱漢字的複雜啊 網上搜了一下,能看到的解決方案大抵都是說把所有漢字的筆畫預先記錄好,然後去查詢 但這樣做顯然是有點麻煩的。那麼是否有更加好的方式呢?我找到了微軟最近發布的乙個international pack,發現...
漢字的奧秘 獲取漢字的筆畫數
想想看,如果你需要在 裡面得到漢字的筆畫數,該怎麼辦呢?每到這個時候,我們就一直感慨咱漢字的複雜啊 網上搜了一下,能看到的解決方案大抵都是說把所有漢字的筆畫預先記錄好,然後去查詢 但這樣做顯然是有點麻煩的。那麼是否有更加好的方式呢?我找到了微軟最近發布的乙個international pack,發現...
java獲取漢字筆畫數
前段時間做個專案,主要是中文驗證碼識別,分為了幾類問題,一類是得出某個漢字的筆畫數,在網上搜了一下,基本方法都是大同小異,都是通過查gb2312的字符集的筆劃列表。下面給出源 public intgetstrokecount char charcator if bytes.length 1 if b...