Python项目4—汉字首字母读取
Python项目4—汉字首字母读取

Python项目4—汉字首字母读取

实现思路:

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!"))

结果展示:

注:需自己导入二级汉字检索表

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注