python识别一段由字母组成的字符串是拼音还是英文单词

Posted Just do it!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python识别一段由字母组成的字符串是拼音还是英文单词相关的知识,希望对你有一定的参考价值。

环境:win10 python3.6

先说一下算法思想:

首先建立本地拼音库(不带声调)。使用贪婪算法将字符串从左向右扫描,将字符串与本地拼音库(这里提供给大家一个)进行匹配,当发现匹配成功时继续扫描,直到不匹配或者结尾为止。重复这个过程

下面是python代码:

def pinyin_or_word(string):
    ‘‘‘
    judge a string is a pinyin or a english word.
    pinyin_Lib comes from a txt file.
    ‘‘‘
    string = string.lower()
    stringlen = len(string)
    result = []
    while True:
        i_list = []
        for i in range(1,stringlen+1):
            if string[0:i] in pinyin_Lib:
                i_list.append(i)
        if len(i_list) == 0:
            print("这是一个英语单词!")
            temp_result = []
            break
        else:
            temp = max(i_list)
            result.append(string[0:temp])
            string = string.replace(string[0:temp],‘‘)
            stringlen = len(string)
            if stringlen == 0:
#                print("这是一个拼音!")
#                print(result)
                break
    return result

In [1]: pinyin_or_word("woaizhongguo")
Out[1]: [‘wo‘, ‘ai‘, ‘zhong‘, ‘guo‘]

这里我封装成了一个函数:传参为字符串,输出“拼音+拼音长度”或者判定英文。

其实这个算法是有缺陷的:

①比如你输入一个英文单词‘open‘,将返回拼音‘o‘+‘pen‘

②虽说是判断拼音或单词,但是主要应该说是判断拼音,不能严格判断单词,想要精确判断,需添加单词库。

关于第二点这个容易修复,第一点暂时想不到解决方法,倘若哪位大侠可以想到,还望指教。

以上是关于python识别一段由字母组成的字符串是拼音还是英文单词的主要内容,如果未能解决你的问题,请参考以下文章

Python中文转拼音代码(支持全拼和首字母缩写)

1029. 旧键盘(20)

PAT——1029. 旧键盘

1029 旧键盘(20 分)

PAT 1029. 旧键盘(20)

Python实现汉字转换拼音