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”的情况。
python识别一段由字母组成的字符串是拼音还是英文单词的更多相关文章
- kaggle之识别谷歌街景图片中的字母
https://github.com/lijingpeng/kaggle/tree/master/competitions/image_recognize 识别谷歌街景图片中的字母 street-vi ...
- Python识别网站验证码
http://drops.wooyun.org/tips/6313 Python识别网站验证码 Manning · 2015/05/28 10:57 0x00 识别涉及技术 验证码识别涉及很多方面的内 ...
- python识别验证码——PIL,pytesser,pytesseract的安装
1.使用Python识别验证码需要安装Python的图像处理模块(PIL.pytesser.pytesseract) (安装过程需要pip,在我的Python中已经安装pip了,pip的安装就不在赘述 ...
- Python之爬虫-段子网
Python之爬虫-段子网 https://ishuo.cn #!/usr/bin/env python # -*- coding:utf-8 -*- import re import request ...
- [Python] Python 获取中文的首字母 和 全部拼音首字母
Python 获取中文的首字母 和 全部拼音首字母 代码如下: import pinyin def getStrAllAplha(str): return pinyin.get_initial(str ...
- Python数据类型的内置函数之str(字符串)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) str(字符串)的一些操作 - 字符串相连方法 # 字符串的 ...
- Python基础-列表、元组、字典、字符串
Python基础-列表.元组.字典.字符串 多维数组 nums1 = [1,2,3] #一维数组 nums2 = [1,2,3,[4,56]] #二维数组 nums3 = [1,2,3,4,['a ...
- python之最强王者(4)——字符串
1.Python 中文编码 前面章节中我们已经学会了如何用 Python 输出 "Hello, World!",英文没有问题,但是如果你输出中文字符"你好,世界" ...
- asp.net 获取汉字字符串的拼音首字母,含多音字
需求:在很多时候数据查询的时候,我们希望输入某个人姓名的拼音首字母进行查询,例如“潘长江”,输入“pcj”,就能搜索潘长江相关信息. 实现: #region 获取汉字转换拼音 首字母 public s ...
随机推荐
- PHP标签
1.PHP原标签 2.脚本标签 3.短标签 需要short_open_tag=on,默认情况下为on 4.asp标签 需要asp_tags为on,默认为off
- cocos2dx位图字体bitmapfont使用
参考此文,http://www.cocos2dres.com/post/87.html 在cocosbuilder里使用时有几个注意事项 1.中文保存时选择unicode 2.导出时选择 text 3 ...
- git版本管理之git-ssh 配置和使用
1.设置用户名和邮箱 $ git config --global user.name "gsx-gh" $ git config --global user.email " ...
- C语言 函数指针二(正向调用)
//函数指针做函数参数 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<Wi ...
- 利用JMeter的beanshell进行接口的加密处理
最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进 ...
- 请写出一个超链接,点击链接后可以向zhangsan@d-heaven.com发送电子邮件。
请写出一个超链接,点击链接后可以向zhangsan@d-heaven.com发送电子邮件. <a href=”mailto: zhangsan@d-heaven.com”>发邮件</ ...
- 多线程之使用读写锁ReentrantReadWriteLock实现缓存系统
简单地缓存系统:当有线程来取数据时.假设该数据存在我的内存中.我就返回数据.假设不存在我的缓存系统中,那么就去查数据库.返回数据的同一时候保存在我的缓存中. 当中涉及到读写问题:当多个线程运行读操作时 ...
- K-Means算法Demo
简介:本Demo是参照这个网站上的Demo自己用Java实现的.将Java打包为Jar,再将Jar转为exe,源代码及程序Demo下载请点我. K-Means算法简介 我尽量用通俗易懂但不规范的语言来 ...
- C语言程序设计-同一天生日[综合应用]
[问题描述] 在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生. [输入形式] 第一行为整数n,表示有n个学生,n<=200. ...
- javascript 字符串进行 utf8 编码的方法(转)
实践中碰到了一个大问题,在 javascript 中,可能有一些中文字符串,我们想将其进行二进制流编码的时候,需要将其转换为 utf8 的编码. 也就是说,输入的是一个字符串:'呆滞的慢板今天挣了10 ...