python怎么识别拼音-python识别一段由字母组成的字符串是否是拼音

环境:win10 python3.6

先说一下算法思想:

首先建立本地拼音库(不带声调)。使用逆向最大匹配将字符串与本地拼音库(这里提供给大家一个)进行匹配。话不多说,见code:

def pinyin_or_word(string):

'''

judge a string is a pinyin or not.

pinyinLib comes from a txt file.

'''

max_len = 6 # 拼音最长为6

string = string.lower()

stringlen = len(string)

result = []

while True:

matched = 0

matched_word = ''

if stringlen < max_len:

max_len = stringlen

for i in range(max_len, 0, -1):

s = string[(stringlen-i):stringlen]

if s in pinyinLib:

matched_word = s

matched = i

break

if len(matched_word) == 0:

break

else:

result.append(s)

string = string[:(stringlen-matched)]

stringlen = len(string)

if stringlen == 0:

break

return result

In [1]: pinyin_or_word("woaizhongguo")

Out[1]: ['wo', 'ai', 'zhong', 'guo']

其实这个算法是有缺陷的:比如你输入一个英文单词'open',将返回拼音'o'+'pen'。

注:正向最大匹配会遇到“xiange”分成“xiang/e”的情况。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值