漢字筆畫排序

2022-09-06 07:42:12 字數 1294 閱讀 4404

之前工作需要將客戶名字按筆畫排序,因此寫了乙個筆畫排序的工具,話不多說,上**

"""漢字筆畫順序相關

>>> 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...