环境: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”的情况。

最新文章

  1. &lt;canvas&gt;drawImage()方法无法显示图片
  2. redis和memcached的区别(总结)
  3. Jersey 2 + Maven + Tomcat + IntelliJ IDEA 搭建RESTful服务
  4. sql server 2008 相关基础(物理备份还原)
  5. iOS开发资源整理【01】
  6. .jre下的lib和jdk下的lib的区别
  7. 如何将NTFS格式的移动硬盘挂接到Mac OS上进行读写(Read/Write)操作
  8. magento
  9. QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)
  10. hdu 5650 so easy (异或)
  11. UI自动化测试(四)AutoIT工具使用和robot对象模拟键盘按键操作
  12. Java中的a++和++a的区别
  13. 自学Zabbix4.0之路
  14. python - 发送带各种类型附件的邮件
  15. cf 1114E
  16. lnmp/nginx系统真正有效的图片防盗链完整设置详解
  17. Py打开pkl文件【转载】
  18. vue基础——组件基础
  19. jQuery下拉框操作系列$(&quot;option:selected&quot;,this) &amp;&amp;(锋利的jQuery)
  20. 二次封装bootstrap-table及功能优化

热门文章

  1. 初窥XSS跨站脚本攻击
  2. cocos2dx错误收集
  3. R语言安装sqldb包报错解决办法
  4. javaweb乱码(tomcat服务器)
  5. php 判断时间是否超过
  6. 请写出一段表单提交的HTML代码,表单名称为form1,提交方式为post,提交地址为submit.asp
  7. Learning to Compare: Relation Network 源码调试
  8. LNMP+Zabbix搭建
  9. ubuntu 下 Nginx相关设置
  10. mybatis的dao的注解