经常会需要用到将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())

for s in rep.keys():

strs = strs.replace(s,rep[s])

return strs

这时候zhangwei已经可以转为ZhangWei了

在进行批量转换的时候又遇到一个问题,碰到chenguiying(陈桂英)这种拼音的时候,会转化为ChenguiYing,这是因为r、n、g既可以做结尾,也可以做声母,于是又对nosm这个list进行一次判断,发现这类后,再往后判断一个字符,判断是否在声母表中

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())

for s in rep.keys():

strs = strs.replace(s,rep[s])

for s in nosm:

tmp_num = 0

isOk = False

while (tmp_num < len(strs)) and (isOk==False):

try:

tmp_num = strs.index(s.lower(),tmp_num)

except:

isOk = True

else:

tmp_num = tmp_num + len(s)

if strs[tmp_num:tmp_num+1].lower() not in smlist:

strs = strs[:tmp_num-1]+strs[tmp_num-1:tmp_num].upper()+strs[tmp_num:]

return strs

这时候已经可以提取声母了,剩下就简单了,碰到大写字母后就是一个拼音的开始,提取简拼就只找大写字母

拆分

def onep(strs):

restr = ''

strs = sm(strs)

for s in strs:

if 'A' <= s and s <= 'Z':

restr = restr + ' ' + s

else:

restr = restr + s

restr = restr[1:]

restr = restr.lower()

return restr.split(' ')

返回

['chen','gui','ying']

简拼提取

def simplep(strs):

restr = ''

strs = sm(strs)

for s in strs:

if 'A' <= s and s <= 'Z':

restr = restr + s

restr = restr.lower()

return restr

返回

cgy

然后就可以玩很多了

附一个通过拼音生成弱口令字典的脚本

#!/usr/bin/python

# Author : wkong

# Crack

def clearChar(chars):

reStr = ['\n','\r','\t',' ']

for reS in reStr:

chars = chars.replace(reS, '')

return chars

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())

for s in rep.keys():

strs = strs.replace(s,rep[s])

for s in nosm:

tmp_num = 0

isOk = False

while (tmp_num < len(strs)) and (isOk==False):

try:

tmp_num = strs.index(s.lower(),tmp_num)

except:

isOk = True

else:

tmp_num = tmp_num + len(s)

if strs[tmp_num:tmp_num+1].lower() not in smlist:

strs = strs[:tmp_num-1]+strs[tmp_num-1:tmp_num].upper()+strs[tmp_num:]

return strs

def simplep(strs):

restr = ''

strs = sm(strs)

for s in strs:

if 'A' <= s and s <= 'Z':

restr = restr + s

restr = restr.lower()

restr = restr.capitalize()

return restr

def rePass(name):

uList = []

uList.append(user.capitalize())

uList.append(sm(user))

uList.append(simplep(user))

pwdList = []

ce = ['!@#123','123!@#','@123','@1234','@12345','@123456','123','1234','12345','123456','123.','1234.','12345.','123456.','123123','abc','abc@123','qwer!@#','!@#qwer','qwe!@#','!@#qwe','!QAZ2wsx','1q2w3e']

for s in ce:

for u in uList:

pwdList.append(u+s)

return pwdList

def autoCrack(username, password):

print(username+':'+password)

if __name__ == '__main__':

userFile = 'zhangwei.txt'

pUserFile = open(userFile, 'r')

userList = pUserFile.readlines()

pUserFile.close()

for user in userList:

user = clearChar(user)

pwd = rePass(user)

for pw in pwd:

autoCrack(user, pw)

image.png

python的拼音_Python之拼音拆分相关推荐

  1. python剔除字母_python去除拼音声调字母,替换为字母的方法

    第一种方法 import sys import unicodedata s = "Lǐ Zhōu Wú" remap = { # ord返回ascii值 ord('t'): '', ...

  2. python分割数字_python实现整数拆分,输出拆分序列

    昨天笔试VIPKID有一道关于整数拆分的题目,要求输出拆分后的序列,当时没有做出来,记录一下可以实现的想法: 题目示例: 从键盘读入一个数 n, 输出所有和为 n 的子序列和,包括 n 测试用例: 输 ...

  3. python读取excel汉字转成拼音_python 批量将中文名转换为拼音

    有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种Python实现的方法,最后给一个批量操作的代码案例! 一.xpinyin 开门见山,Python中文字转拼音可 ...

  4. python 将中文变为拼音_python 批量将中文名转换为拼音

    有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种python实现的方法,最后给一个批量操作的代码案例! 一.xpinyin 开门见山,python中文字转拼音可 ...

  5. python读取excel汉字转成拼音_Python语言之用Python将全部中文姓名转为拼音

    本文将介绍三种用Python将中文姓名转换为拼音的方法,Python的实用技巧希望对Python的学习有所帮助. 有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三 ...

  6. python直接把汉字转换为拼音

    今天任务要把之前获取到的中文例句全部转换成拼音.最开始打算通过爬虫从那些在线转换的网站上面爬取下来.但是所有的网站的都如下图的网站一样,通过页面中js动态加载的.直接从url入手行不通.按我现阶段多掌 ...

  7. python怎么读汉字翻译拼音_用python3.6把汉字转化为拼音

    本文,介绍一下用python把汉字转化为拼音的方法.这是语音合成的一种实现方法. 工具/原料 电脑 python3.6 方法/步骤 1 把一个汉字转化为unicode编码. a = u'水' b = ...

  8. python将汉字转化为拼音

    python将汉字转化为拼音 安装 依赖python包:pypinyin 直接pip install pypinyin即可 常用方法及场景案例 from pypinyin import pinyin, ...

  9. 李亚涛:python中文如何转换成拼音?

    大家好,今天给大家分享一个我之前写程序遇到的一个问题,就是我在采集某房产信息的时候,由于字段非常多,有将近100多个,而且很多字段是相互关联的 我采集是直接导入到数据库,为了防止重复,以及设置一个唯一 ...

  10. python输出字典_Python如何将字典键和值拆分为单独的列表?(代码示例)

    在Python中如何将给定字典拆分为键和值的列表?下面本篇文章就来给大家介绍几种实现方法,希望对大家有所帮助.[视频教程推荐:Python教程] 方法一:使用内置函数:keys()和values() ...

最新文章

  1. bert+lstm+crf ner实体识别
  2. 香港居民换领新智能身份证 市民对办理过程表满意
  3. python编程入门到实践目录-Python编程从入门到实践笔记——文件
  4. Android 开发, Android 安全 精品资料收集
  5. matlab语言主要功能,2014年秋季学期《MATLAB语言及应用》课程试题-2
  6. HighCharts:隐藏最下方logo
  7. postgresql 窗口函数
  8. vscode 日志文件_vscode 日志文件_Visual Studio Code(VS code)介绍
  9. vscode 搭建Vue项目及引入elementUI
  10. cad横断面图转文本
  11. 新电脑自带win11刷win10 系统之后出现的触摸屏/板失灵等问题
  12. 传感器模组:手机摄像头模组-1亿像素是如何实现的?
  13. 金融行业市场占有率超五成,ZDNS筑牢金融科技网络根基
  14. Java 内部类简介,理解,特点,注意事项
  15. 服务器需要支持5g,5G时代需要什么样的服务器?
  16. 腾讯云Coding平台入门指引
  17. fiddler4抓包修改Request,断点设置
  18. DDCTF2020 Writeup
  19. 北大原题 我爱你啊 字符串处理
  20. 锁定计算机 k 是什么意思,计算机中的K、M、G、T到底指的是

热门文章

  1. SpaceX的代码开源了,来看看火箭技术的代码.Spacex Rest API设计很有参考价值
  2. 关于图像傅里叶变换得到的频谱图的通俗理解
  3. 有监督机器学习训练流程---人工智能工作笔记0015
  4. 计算机证件照颜色,更换证件照底色只需10秒,关键还不要钱!这4种方法你一定要学...
  5. 【转载】白素贞的身世之谜
  6. Redis和MySQL如何保持数据一致性
  7. 分享CrystalDiskInfo8.2.4与CrystalDiskMark6.0.2个性版本下载
  8. C# 上位机界面添加扫码枪输入
  9. python求均值函数_python求列表平均值函数
  10. mysql 求几何平均值_回忆高中数学--各种平均数公式