|---------------------------------------------------------------------------------|
| 按拼音归类GBK编码表中的所有汉字,每个拼音对应的第一个汉字前面用左大括号,每一个拼音的最后一个汉字后面用右大括号,并保存到txt文本中,并统计包含了多少汉字 |
安装必要的库
确保安装 pypinyin 库用于拼音转换:
bash
pip install pypinyin
代码
bash
import collections
import pypinyin
# 生成 GBK 编码中的所有汉字
gbk_charset = set()
for high_byte in range(0x81, 0xFF):
for low_byte in range(0x40, 0xFF):
try:
byte_seq = bytes([high_byte, low_byte])
char = byte_seq.decode('gbk')
if '\u4e00' <= char <= '\u9fff': # 判断是否为汉字
gbk_charset.add(char)
except UnicodeDecodeError:
continue
# 创建拼音分类字典
pinyin_dict = collections.defaultdict(list)
# 将汉字按拼音归类
for char in gbk_charset:
pinyin_list = pypinyin.pinyin(char, style=pypinyin.NORMAL)
if pinyin_list:
pinyin = pinyin_list[0][0].lower()
pinyin_dict[pinyin].append(char)
# 统计汉字数量
total_hanzi_count = sum(len(chars) for chars in pinyin_dict.values())
# 按拼音排序并保存到文本文件
sorted_pinyin = sorted(pinyin_dict.keys())
with open('gbk_hanzi_sorted_by_pinyin.txt', 'w', encoding='utf-8') as f:
for pinyin in sorted_pinyin:
chars = pinyin_dict[pinyin]
if chars:
formatted_chars = '{' + ''.join(chars) + '}'
f.write(f"{pinyin}: {formatted_chars}\n")
f.write(f"\n总共包含的汉字数量: {total_hanzi_count}\n")
print("汉字按拼音归类并保存到文本文件完成。")
print(f"总共包含的汉字数量: {total_hanzi_count}")