首页 > 编程语言 >改造Python中文拼音扩展库pypinyin补充自定义声母全过程

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

时间:2023-06-09 20:02:32浏览次数:43  
标签:这个 函数 自定义 Python py pypinyin 问题 导入 声母


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

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

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

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

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

改造Python中文拼音扩展库pypinyin补充自定义声母全过程_编程语言_02

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

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

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

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

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

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

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

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

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

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

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

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

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


标签:这个,函数,自定义,Python,py,pypinyin,问题,导入,声母
From: https://blog.51cto.com/u_9653244/6450977

相关文章

  • Python运算符is与==的区别
    在Python中,关系运算符==用来测试两个对象的值是否相等,而同一性测试运算符is用来测试两个对象是否是同一个对象,如果两个变量是同一个对象,那么它们的内存地址是一样的,当然它们的值肯定也是一样的。并且,如果两个变量是同一个列表或其他类型的可变序列,在某些操作中通过一个变量可以影响......
  • 使用Python提取JPEG图像文件dpi并计算物理尺寸
    感谢浙江省浦江中学方春林老师提供的问题、测试图像和第一版本的代码!下面的代码需要安装Python图像处理库pillow,由于不同公司对JPEG压缩算法和格式的实现不完全一样,有些类型的jpg文件暂时无法提取dpi信息,如果找到好的办法的话后期会再进行补充。fromosimportlistdirfromPILim......
  • Python中的枚举类型及其用法
    >>>fromenumimportEnum#导入模块中的类>>>classColor(Enum):#创建自定义枚举类red=1blue=2green=3>>>Color.red#访问枚举类的成员<Color.red:1>>>>type(Color.green)#查看枚举类成员的类型<enum'Color'>>&g......
  • 几行Python代码打造自己的磁盘垃圾文件清理器
    本文假设某些特定类型的文件和大小为0的文件为垃圾文件,可以自由扩展代码的列表,也就是垃圾文件的类型。fromos.pathimportisdir,join,splitextfromosimportremove,listdir,chmod,statimportsys#指定要删除的文件类型filetypes=['.tmp','.log','.obj','.txt']d......
  • Python+tkinter动态创建与销毁组件小案例
    本文代码演示了如何在tkinter窗体上动态创建组件以及销毁组件的方法。importtkinterimporttkinter.messageboximporttkinter.simpledialogbtnList=[]#动态创建组件,并计算组件在窗体上的位置defplace(n):foriinrange(n):exec('btn'+str(i)+'=tkinter.B......
  • Python代码调试之异常回溯
    当发生异常时,Python会回溯异常,给出大量的提示,可能会给程序员的定位和纠错带来一定的困难,这时可以使用sys模块的exc_info()函数来回溯最近一次异常。sys.exc_info()的返回值tuple是一个三元组(type, value, traceback),其中:type——异常的类型value——异常的信息或者参数tr......
  • Python+pandas读取Excel文件并统计演员参演电影数量
    Excel样本数据请参考Python读取Excel文件并统计演员参演电影>>>importpandasaspd>>>df=pd.read_excel('电影导演演员.xlsx')>>>df电影名称导演演员0电影1导演1演员1,演员2,演员3,演员41电影2导演2演员3,演员2,演员4,演......
  • python爬虫--爬取各大城市的各个区域的租房信息
    一、选题背景衣食住行是生活的基本需求。衣和食好解决,不喜欢的衣服可以买新的,不好吃的食物可以换一家吃。可是在住宿上,买房和租房的置换成本都相对较高,因此房源选择尤为慎重。作为目前买不起房的自然人,我们一般是通过中介来实现租房的需求比如自如,贝壳找房和链家。链家占据了租赁......
  • 详解Python中的浅复制与深复制
    列表对象的copy()方法返回列表的浅复制。所谓浅复制,是指生产一个新的列表,并且把原列表中所有元素的引用都复制到新列表中。如果原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型,一般是没有问题的。但是,如果原列表中包含列表之类的可变数据类型,由于浅复制时......
  • Python实现图像空域随机水印加入与提取
    本文要点在于Python扩展库pillow中Image类的运用。图像空域随机水印的主要思路在于:在原始图像中随机选取一些位置替换为水印图片中的非背景像素,同时生成日志文件记录替换的位置和水印中像素位置的对应关系,然后可以根据加入水印的图片和日志文件来提取和验证水印。fromosimportre......