作为一个妄想成为rapper的porgrammer,

写歌词想不出双押可是个matter,

我又不想每次点开我的browser,

不亲自做点什么哪配当coder!

之前我们学习过jieba分词库,用于中文分词。可是押韵看的是拼音,jieba分词显然不好用了,但是别担心,python还有个xpinyin库,可以将中文转换成拼音,只需要先pip install,再导入即可:

from xpinyin import Pinyin

我的思路是这样的:输入要查询的词语后,利用xpinyin库分离出拼音(通常押韵可以简略地看做后面的元音相同),然后我们便通过正则表达式过滤掉拼音开头的辅音,留下的便是韵脚。将这个韵脚字符串与事先准备好的txt格式的词库(网上随意下载)进行遍历比较,两个字的韵脚均相同,即为要寻找的双押词,把词语输出即可。

下面是一些关键步骤的代码:

由于我下载的词库格式有问题,词语之间没有分隔,所以我先用jieba分词把词语分开:

word_lst = [] #用于存储划分后的词语

for line in open('ch_dict.txt',errors='ignore'):

item = line.strip('\n\r').split('\t') #制表格切分

tags = jieba.analyse.extract_tags(item[0]) #jieba分词

for t in tags:

word_lst.append(t)

将输入的词语转换成拼音并提取韵脚:

p = Pinyin()

s0=str(input())

s0=p.get_pinyin(s0).split('-') #转换后的拼音是“xx-xx”格式的,因此通过“-”将拼音分割

#提取韵脚

s_first=re.findall(r".*[b,c,d,f,h,j,k,l,m,p,q,r,s,t,w,x,y,z](.*).*",s0[0])

s_last=re.findall(r".*[b,c,d,f,h,j,k,l,m,p,q,r,s,t,w,x,y,z](.*).*",s0[1])

然后遍历word_lst,用同样的方法提取韵脚,与s_first、s_last比较,但此时应注意,由于词库里有超过两个字的词,所以为了查找双押,应该改变字符串的索引位置:

s1=p.get_pinyin(str(word_lst[i])).split('-') #将词库的每个词转换成拼音

正则表达式分别取s1[-1]和s1[-2],即最后两个字

遍历过程中进行判断,将符合条件的词语输出:

if s_first==s1_first and s_last==s1_last and str(word_lst[i]) not in s:

print(str(word_lst[i]))

s.append(str(word_lst[i])) #s用于判断词语是否重复,初始化为空列表

写完收工,接下来写歌去吧!

python 两个冒号是什么成语_python查询双押词相关推荐

  1. python连续两个冒号是什么成语_python中双冒号

    1.字符串转义序列转义字符 描述(在行尾时) 续行符\ 反斜杠符号' 单引号" 双引号a 响铃b 退格(Backspace)e 转义000 空n 换行v 纵向制表符t 横向制表符r 回车f ...

  2. python两个表格相同数据筛选_python如何统计所有文本文件的行数 如何用python实现两个文件重复数据筛选并统计...

    如何用python统计文本中重复行的数目? python比较txt文档中每行文本之间重复词的个数不想面对他离开,逃避不是一个好方法,但却是唯一的办法. 每一行弄成一个集合,分享两个集合之间的交集,计算 ...

  3. python两个装饰器执行顺序_python中多个装饰器的执行顺序

    今天讲一下python中装饰器的执行顺序,以两个装饰器为例. 装饰器代码如下: def wrapper_out1(func): print('--out11--') def inner1(*args, ...

  4. python 两台机器之间传递数据_Python:通过套接字在两台计算机之间发送数据

    我正在开发一个脚本,可以在两台不同的计算机之间传输数据,并可以访问互联网.我正在使用 python的socket标准模块.当我在单台计算机上运行客户端和服务器时,它工作正常,但是当它们在不同的计算机上 ...

  5. python两条曲线图片相似度_Python比较两个图片相似度的方法

    本文实例讲述了Python比较两个图片相似度的方法.分享给大家供大家参考.具体分析如下: 这段代码实用pil模块比较两个图片的相似度,根据实际实用,代码虽短但效果不错,还是非常靠谱的,前提是图片要大一 ...

  6. python两个装饰器执行顺序_python中多个装饰器的执行顺序详解

    装饰器是程序开发中经常会用到的一个功能,也是python语言开发的基础知识,如果能够在程序中合理的使用装饰器,不仅可以提高开发效率,而且可以让写的代码看上去显的高大上^_^ 使用场景 可以用到装饰器的 ...

  7. python两个时间点比较大小_python中如何比较两个时间点

    python中如何比较两个时间点?下面给大家讲解一下具体步骤: 1.string转datetime#字符串转datetime dt = datetime.datetime.strptime('2017 ...

  8. python两张图合成一张_Python图像处理实现两幅图像合成一幅图像的方法【测试可用】...

    本文实例讲述了Python图像处理实现两幅图像合成一幅图像的方法.分享给大家供大家参考,具体如下: 将两幅图像合成一幅图像,是图像处理中常用的一种操作,python图像处理库PIL中提供了多种种将两幅 ...

  9. python两个小于号什么意思_python中的不等于号是什么

    python中的不等于号用!=表示.Python支持的比较运算符如下图所示 比较运算符,也成关系运算符,用于对常量.变量或表达式的结果进行大小.真假等比较,如果比较结果为真,则返回 True:反之,则 ...

最新文章

  1. 查询去除空值_SQL多表查询
  2. ASP.NET MVC Html.ActionLink使用说明
  3. 51个国家,2372名选手,20万奖金池,阿里全球调度算法大赛收官
  4. Java Collections copy()方法与示例
  5. eosio.msig合约源码分析
  6. 超级牛皮的oracle的分析函数over(Partition by...) 及开窗函数
  7. SAP R3 display Vendor list, MKVZ .
  8. vba 判断目标单元格内容改变的代码_【VBA小代码】批量改变单元格部分字符格式...
  9. apache 二级域名设置完整步骤
  10. 线下餐饮实体店线上精准引流方案!你想看的都在这儿!这篇文章教你转化!
  11. 17. 尚融宝引入阿里云短信服务
  12. mupdf中CMYK与RGB的转换算法
  13. 股票的压力位和支撑位
  14. 短网址短链接哪个好用?2021年最好的缩短链接短网址推荐
  15. R plot图片背景设置为透明_R语言数据可视化基因名称转换及KEGG/GO富集分析
  16. 关于HTML的相关标签
  17. 基于ssm的校园二手物品交换系统
  18. Unity_太阳月亮地球的自转公转脚本
  19. Git学习(1)pro git阅读尚硅谷视频
  20. php调用接口发送短信

热门文章

  1. 华为笔试:字符串加密(python版)
  2. Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
  3. 【对讲机的那点事】玩对讲机,数字对讲机DMR制式模块你了解多少?(下)
  4. 从领先行业到定义标准 小鱼易连全线新品发布让云视频真正进化
  5. Batch Normalization(BN)简介
  6. Linux下的网络设备驱动
  7. 黑莓9900应用收集
  8. CEO们的时间管理办法
  9. Element UI - v-infinite-scroll无限滚动组件
  10. 2021青少年开源教育论坛暨OpenHarmony中小学师资培训成功举办