问题要从昨天说起,应根球老师发给我一个代码问可能是啥原因,如下:

该函数的第二个参数3含义为只保留声母,为啥“应”的声母丢了呢?

因为当时正是课间休息,一会儿还要上课,没时间多想,感觉或许是lazy_pinyin()函数的问题,毕竟是个懒惰的函数嘛,于是告诉应老师试试其他函数。

今天早上来教研室以后,突然想起这个问题,于是我也试了试,发现存在这个问题的不仅仅是这个懒惰的函数,不懒惰的函数也存在相同的问题。例如:

于是,我感觉应该是这个库的设计有问题,但是问题在哪里呢?这肯定需要阅读源代码来确定并尝试解决,于是我打开这个库的安装文件夹,如图:

初步分析,phrases_dict.py和pinyin_dict.py这两个文件比较大,看名字应该是一些字典的定义,这也是标准的做法。其他文件暂时不知道具体用途,那么就从入口文件__init__.py开始吧,内容如下:

很容易发现,在导入pypinyin时,自动从constants.py文件中导入了很多常量(吃瓜群众可能要问了:你咋知道是常量?这个嘛,一般惯例就是这样的,在Python编码规范中绝大部分常量都是全部字母大写的。)那么接下来就看看这个文件里有什么吧。如图:

后面的观众请大声告诉我,你看到了什么?回答正确,声母表,并且这个声母表里真的没有“y”,那么很自然会想到,我们可不可以自己增加一个呢,要是在这里增加了会不会起作用呢?可以明确地说,答案是肯定的,那就动手吧,修改后如下:

好了,保存一下,赶紧去试试好用不好用吧。接上面的代码继续执行,如图:

看到这个图大家开心了,心里肯定在想“董老师,这下演砸了吧,哈哈哈哈,看你怎么收场?”

深吸一口气,别紧张,回想上面的完整过程,似乎完全没有问题,那么问题在哪里呢?那就是:重新导入模块或重启shell,当然,在程序中是不会出现这个问题的,每次运行时都会重新导入模块。

最后做个小广告:热烈庆祝拙作《Python可以这样学》(董付国著,清华大学出版社,2017.2)出版第3个月完成了第2次印刷,《Python程序设计(第2版)》(董付国编著,清华大学出版社,2016.6)出版第9个月完成了第3次印刷,《Python程序设计基础》(董付国编著,清华大学出版社,2015.8)出版第18个月马上要进行第4次印刷。

改造Python中文拼音扩展库pypinyin补充自定义声母全过程相关推荐

  1. Python截屏扩展库pyscreenshot安装与使用

    PIL是非常成熟的Python图像处理扩展库,但只支持Python 2.x,另一个同样功能的扩展库pillow完美支持Python 3.x.然而,这两个库的部分功能不能在各版本的Linux平台使用,这 ...

  2. Python使用pandas扩展库DataFrame对象的pivot方法对数据进行透视转换

    Python扩展库pandas的DataFrame对象的pivot()方法可以对数据进行行列互换,或者进行透视转换,在有些场合下分析数据时非常方便. DataFrame对象的pivot()方法可以接收 ...

  3. 详解Python科学计算扩展库numpy中的矩阵运算(1)

    首先解答上一篇文章中使用with关键字让你的Python代码更加Pythonic最后的习题,该题答案是False,原因在于内置函数sorted()的参数reverse=True时表示降序排序,而内置函 ...

  4. Python科学计算扩展库numpy中的广播运算

    首先解答上一个文章Python扩展库numpy中的布尔运算中的问题,该题答案为[111, 33, 2],题中表达式的作用是按列表中元素转换为字符串后的长度降序排序. ----------------- ...

  5. Python大数据处理扩展库pySpark用法精要

    Spark是一个开源的.通用的并行计算与分布式计算框架,其活跃度在Apache基金会所有开源项目中排第三位,最大特点是基于内存计算,适合迭代计算,兼容多种应用场景,同时还兼容Hadoop生态系统中的组 ...

  6. python官方的扩展库索引是什么_python扩展列表

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python扩展内容阅读本文需要3分钟? ① python中yield关键字的使 ...

  7. python如何安装扩展库openpyxl和numpy_OpenPyXl的使用

    开始在内存中使用 创建一个workbook 在刚开始使用openpyxl的时候,不需要直接在文件系统中创建一个文件,仅仅需要导入Workbook类并开始使用它: >>> from o ...

  8. python如何安装扩展库openpyxl和numpy_Python第三方库之openpyxl(2)

    Python第三方库之openpyxl(2) 简单的使用 写一个工作簿 >>> from openpyxl importWorkbook>>> from openp ...

  9. 安装python的rabbitmq扩展库

    安装 py-amqplib wget http://py-amqplib.googlecode.com/files/amqplib-1.0.2.tgz tar -zxvf amqplib-1.0.2. ...

最新文章

  1. jsp内置对象pageContext和config对象
  2. 算法提高课-搜索-DFS之搜索顺序-AcWing 1117. 单词接龙:dfs
  3. go在方法中修改结构体的值_golang修改结构体中的切片值方法
  4. 在Linux下用netstat查看网络状态、端口状态
  5. python中字母大小顺序,如何在Python中按字母顺序对unicode字符串排序?
  6. 华为机试——句子逆序
  7. child-selector解释
  8. android 图片合成pdf文件,怎样将图片转换成pdf文件时将它们合并成一个pdf文件?...
  9. 高恪智能流控怎么设置_K2P智能流控效果(高恪)
  10. 23个常见Webshell网站管理工具
  11. 2000坐标系和WGS84的关系
  12. XCTF 3rd-HITB CTF-2017 arrdeepee 复现
  13. SSL-ZYC 2133 腾讯大战360
  14. mysql:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)解决方法
  15. 偏导,梯度,Hesse矩阵的一些概念和求函数的极值
  16. WideDeep Model、Wide Model(LR)、Deep Model、DeepFm Model、NFM Model复现笔记
  17. JLINK的SWD接口调试器制作
  18. tomcat下载和配置(简单,详细)
  19. Vijos 1836题:HYS与七夕节大作战
  20. 我的物联网项目之下单渠道

热门文章

  1. 89c51,8255,6个led数码管显示时钟的汇编语言程序,汇编语言要求编写一个时钟程序 用八位数码管实现时分秒的计时功能...
  2. mysql必会语法_sql语法:sql必读必会(二)mysql中的函数大全
  3. html介绍班级,班级介绍词 展示班级风采
  4. 获取来源网站php,js实现获取网站搜索来源代码
  5. java中menu用法_Android Menu用法全面讲解
  6. 简单扫一下官文 - 11G Release2 新特性
  7. docker搭建Redis的主从集群
  8. rip java_JavasScripV1.0.htm
  9. 通讯录通过id找邮箱和手机
  10. listview item里面的控件点击事件