经常会需要用到将zhangwei转化为ZhangWei、Zw、Zhangw之类的,就涉及到一个拼音拆分算法,这里写了一个demo分享给大家
我的思路是先将声母转换为大写,然后就可以根据大写字母来分割单个拼音
学的拼音早忘差不多了,百度了一下,声母有bpmfdtnlgkhjqxrzczyw
转化代码
def sm(strs):
smlist = 'bpmfdtnlgkhjqxrzcsyw'
for s in smlist:
strs = strs.replace(s,s.upper())
return strs
然后发现有个问题,韵母中也包含了声母的元素,zhangwei就会变成ZHaNGWei
发现两个问题,一个是Zh、Ch、Sh这类的包含了声母h,一个是er、an、en、in、un、vn、ang、eng、ing、ong这类的包含了声母r、n、g
于是再加一个转换
def sm(strs):
smlist = 'bpmfdtnlgkhjqxrzcsyw'
nosm = ['eR','aN','eN','iN','uN','vN','nG','NG']
rep = {'ZH':'Zh','CH':'Ch','SH':'Sh'}
for s in smlist:
strs = strs.replace(s,s.upper())
for s in nosm:
strs = strs.replace(s,s.lower())