实现思路:
1.在gbk汉字编码中是有一定规律的176以下不是汉字,176-215之间是一级汉字215以上是二级汉字。
2.其中一级汉字是更具拼音顺序进行编制的,二级汉字则需要用汉字表和其对应的首字母表进行检索。先查找该字符在二级汉字表中的位置,由于二级汉字表中的每一个汉字都跟首字母表中的每一个字母对应,所以更具汉字位置就能检索出对应首字母。
3.在处理一级汉字时可以根据汉字的拼音读取出汉字拼音首字母。
使用函数:
1.代码开头定义了read_txt(filename)和get_first_letter(str_hz)函数,前者用于从文件中读取字符串,后者用于根据传入的汉字,生成对应拼音首字母的字符串。
2.str.encode(‘编码方式’)函数用于改变字符串的编码方式。
实现代码:
# encode:UTF-8
#还未导入二级汉字检索表
def read_txt(filename):
with open(filename, "r") as f:
txt = f.read()
return txt
def get_first_letter(str_hz):
vret = ""
for char in str_hz:
# 处理一级汉字
vchar = char.encode("gbk")
if vchar[0] < 176:
vret += char
elif vchar[0] >= 176 and vchar[0] < 215:
if vchar >= "匝".encode("gbk"):
vret += "z"
elif vchar >= "压".encode("gbk"):
vret += "y"
elif vchar >= "昔".encode("gbk"):
vret += "x"
elif vchar >= "挖".encode("gbk"):
vret += "w"
elif vchar >= "塌".encode("gbk"):
vret += "t"
elif vchar >= "撒".encode("gbk"):
vret += "s"
elif vchar >= "然".encode("gbk"):
vret += "r"
elif vchar >= "期".encode("gbk"):
vret += "q"
elif vchar >= "啪".encode("gbk"):
vret += "p"
elif vchar >= "哦".encode("gbk"):
vret += "o"
elif vchar >= "拿".encode("gbk"):
vret += "n"
elif vchar >= "妈".encode("gbk"):
vret += "m"
elif vchar >= "垃".encode("gbk"):
vret += "l"
elif vchar >= "喀".encode("gbk"):
vret += "k"
elif vchar >= "击".encode("gbk"):
vret += "j"
elif vchar >= "哈".encode("gbk"):
vret += "h"
elif vchar >= "噶".encode("gbk"):
vret += "g"
elif vchar >= "发".encode("gbk"):
vret += "f"
elif vchar >= "蛾".encode("gbk"):
vret += "e"
elif vchar >= "搭".encode("gbk"):
vret += "d"
elif vchar >= "擦".encode("gbk"):
vret += "c"
elif vchar >= "芭".encode("gbk"):
vret += "b"
elif vchar >= "啊".encode("gbk"):
vret += "a"
#处理二级汉字
elif vchar[0] > 215:
#导入二级汉字表
second_ch = read_txt("second_ch.txt")
#导入二级汉字首字母表
second_en = read_txt("second_first_py.txt")
index_ch = second_ch.find(char)
vret += second_en[index_ch].lower()
return vret
if __name__ == "__main__":
print("人生苦短,我用python!========拼音首字母:", get_first_letter("人生苦短,我用python!"))
结果展示:
注:需自己导入二级汉字检索表