如何获取常⽤汉字(GB2312)
听说常⽤汉字有3000多个,怎么获取呢?其实常⽤汉字已经有⼈替我们整理好了,就是字符集GB2312,是我国1980年发布的,共有6763个汉字,分为⼀级汉字和⼆级汉字,⼀级汉字采⽤拼⾳排序,⼆级汉字采⽤部⾸排序,⼀级汉字就是这⾥说的常⽤汉字。所以我们只要⽤⼀个合适的⼯具去获取它就⾏了。这⾥我们⽤Python。
存的部首废活少说,直接上代码:
import json # 导⼊json库⽤于把列表保存成.json格式
characters =[]# 创建⼀个列表⽤于保存汉字字符
for i in range(176,216):
s =bytes([i])
for x in range(161,255):
s +=bytes([x])
try:
c = s.decode("gb2312")
except:
break
characters.append(c)
print(c, end="\t")# 打印结果
s =bytes([i])
print(len(characters))# 打印结果数量
filename ="common_chinese_characters.json"
with open(filename,"w", encoding="utf-8")as f:
json.dump(characters, f, ensure_ascii=False)
说明:bytes.decode(编码类型)⽤于解码,把字节类型转换为字符类型,编码类型为指定的字符集;de(编码类型)⽤于编码,把字符类型转换为字节类型,编码类型为指定的字符集。⼆者互为反向操作。
举个例⼦:
>>> c ='Python⼤法好'.encode('utf-8')# utf-8也是⼀种字符集,⼏乎⽀持世界上的所有语⾔。
>>> s = c.decode('gb2312')# 这样会出问题,要么出错要么乱码。因为utf-8和gb2312的定义不同。
>>> s = c.decode('utf-8')# 这样就没问题了。
>>>print(s)# 可以看到输出结果是 "Python⼤法好",和之前定义的⼀样。
这⾥有必要讲⼀下GB2312的定义:GB2312定义的字符由两位字节构成,⾼位字节和低位字节。⼀级汉字的编码范围
是0xb0a1~0xd7f9(16进制)或者45217~55289(10进制)。可以百度⾃⼰研究,此处不多说。
代码原理很简单,就是利⽤for循环去遍历GB2312字符集定义的⼀级汉字。其中第⼀个for循环⽤于遍
历⾼位字节,第⼆个嵌套在第⼀个for循环⾥的for循环⽤于遍历低位字节。变量s⽤于存储字符类型的汉字编码成字节类型,变量c即为转换成字符类型的汉
字。pt...结构⽤于防⽌最后⼏位汉字出错,因为最后⼀个汉字的字节类型表⽰是b'\xd7\xf9',所以会出错,⽽⼀旦出错就意味着已经结束了。
bytes([i])的[i]并不是表⽰列表索引。整个语句的意思是把整数类型变量i替换成字节类型的⼗六进制形式并保存到变量s。可以⾃⼰在交互环境中试⼀试。
open()中的encoding⽤于指定保存的编码,ensure_ascii=False是必须的,⽤于指定要保存成字符类型,因为中⽂不在ascii编码中,如果没有这句话,输出的json⽂件看起来会是这样:
["\u554a", "\u963f", "\u57c3", "\u6328", "\u54ce",…
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论