通过unihan的文件来实现。

只要是unihan中有kTotalStrokes字段,获取其笔画数。

Hash也是非常简单清楚的,但想到这些unicode其实会有一个分布规律,就记录了一下,

利用此性质通过数组方式来获取笔画。

记录了一下unicode的范围

start: [13311, 19968, 63744, 131072, 173824, 177984, 178208, 194995]
end : [19893, 40917, 64045, 173782, 177972, 178205, 183969, 194998]

总共包括80682个存在笔画数的unicode码,包含CJKV。

64045-131072中间都没有此字段,就分了两部分。

此处使用python3 Demo实现,原理非常简单:使用数组保持笔画,将unicode映射到数组index,即可获取对应笔画数

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 0

strokes_path: https://github.com/helmz/Corpus/blob/master/zh_dict/strokes.txt

"按照unicode顺序排列的笔画数"

Python 获得汉字笔画的更多相关文章

  1. Python抓取百度汉字笔画的gif

    偶然发现百度汉语里面,有一笔一划的汉字顺序:          觉得这个动态的图片,等以后娃长大了,可以用这个教写字.然后就去找找常用汉字,现代汉语常用字表 .拿到这里面的汉字,做两个数组出来,一共是 ...

  2. python把汉字转换成拼音实现程序

    python把汉字转换成拼音实现程序 文章一个简洁干的汉字转拼音 程序,复制下载就可以直接使用,有需要的同学可以参考一下下. #coding:utf-8 #基于python2.6 table = 'a ...

  3. 【Python】 汉字转化汉语拼音pinyin

    pinyin pinyin模块是github上一个小项目,在github.com/cleverdeng/pinyin.py上面可以下到源码.衷心感谢那些为这个模块做出贡献的人来方便我们[鞠躬] 安装: ...

  4. 目不识丁的我使用Python编写汉字注音小工具

    一万点暴击伤害 人懒起来太可怕了,放了个十一充分激发了我的惰性.然后公众号就这么停了半个月,好惭愧- 新学期儿子的幼儿园上线了APP,每天作业通过app布置后,家长需要陪着孩子学习,并上传视频才算完成 ...

  5. python生成汉字图片字库

    最近做文档识别方面的项目,做汉字识别需要建立字库,在网上找了各种OCR,感觉都不好,这方面的技术应该比较成熟了,OCR的软件很多,但没有找到几篇有含金量量的论文,也没有看到哪位大牛公开字库,我用pyg ...

  6. python 将汉字转换为拼音

    xpinyin提供把汉字转为汉语拼音的功能. 安装此模块 pip install xpinyin简单用例: from xpinyin import Pinyin pin = Pinyin() test ...

  7. python处理汉字转拼音pypinyin

    主要是pypinyin 包,官网: http://pypinyin.readthedocs.io/zh_CN/master/index.html jieba包,主要是用来分词的,我之前的博文有介绍:h ...

  8. python中汉字转数字

    #!/usr/bin/env python # -*- coding: utf-8 -*- common_used_numerals_tmp ={'零':0, '一':1, '二':2, '三':3, ...

  9. python获取汉字首字母

    获取汉字首字母 关注公众号"轻松学编程"了解更多. 应用场景之一:可用于获取名字首字母,在数据库中查询记录时,可以用它来排序输出. from pytz import unicode ...

随机推荐

  1. (三)Audio子系统之AudioRecord.startRecording

    在上一篇文章<(二)Audio子系统之new AudioRecord()>中已经介绍了Audio系统如何创建AudioRecord对象以及输入流,并创建了RecordThread线程,接下 ...

  2. (转)AIX ODM 简介

    什么是 ODM 原文:https://www.ibm.com/developerworks/cn/aix/library/1105_chenwei_odm/ Windows 的注册表相信大家都知道,是 ...

  3. [转]分布式锁-RedisLockRegistry源码分析

    前言 官网的英文介绍大概如下: Starting with version 4.0, the RedisLockRegistry is available. Certain components (f ...

  4. javac的Resolve类解读

    方法1:isInitializer() /** An environment is an "initializer" if it is a constructor or * an ...

  5. linux mint 18.2 install postgresql

    https://www.postgresql.org/download/linux/ubuntu/ 1 check Xenial16.04 2  创建文件  /etc/apt/sources.list ...

  6. Linux下Tomcat8.0.44配置使用Apr

    听说Apr可以提高tomcat很多的性能,配置具体如下 1.安装apr 1.5.2 [root@ecs-3c46 ]# cd /usr/local/src [root@ecs-3c46 src]# w ...

  7. PHP之string之str_split()函数使用

    str_split (PHP 5, PHP 7) str_split - Convert a string to an array str_split - 将字符串转换为数组 Description ...

  8. AMQP技术术语

    什么是AMQP AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.基 ...

  9. 原来你是这样的http2......

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由mariolu发表于云+社区专栏 序言 目前HTTP/2.0(简称h2)已经在广泛使用(截止2018年8月根据Alexa流行度排名的头 ...

  10. Http协议之Content-Length

    前言 http协议是互联网中最重要的协议之一,虽然看上去很简单,但是实际中经常遇到问题,我们就已经遇到好几次了.有长连接相关的,有报文解析相关的.对http协议不能一知半解,必须透彻理解才行.所以就写 ...