Python pypinyin module 的应用

  • 安装pypinyin module
    • 这个模块主要处理中文拼音
    • 可以用来做很多很有趣的事情

如何使用help 函数

将help 函数的输出保存到文件中去

  • 一眼会
import sys
import pypinyinwith open('帮助文档.txt','w') as f:sys.stdout = f help(pypinyin) 

如何查找模块中内置的函数

  • 函数 

  • lazy_pinyin(hans, style=<Style.NORMAL: 0>, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False, tone_sandhi=False)
    • 将汉字转换为拼音,返回不包含多音字结果的拼音列表
  • load_phrases_dict(phrases_dict, style='default')
    • 载入用户自定义的词语拼音库
  • load_single_dict(pinyin_dict, style='default')
    • 载入用户自定义的单字拼音库
  • pinyin(hans, style=<Style.TONE: 1>, heteronym=False, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False)
    • 将汉字转换为拼音,返回汉字的拼音列表
  • slug(hans, style=<Style.NORMAL: 0>, heteronym=False, separator='-', errors='default', strict=True)
    • 将汉字转换为拼音,然后生成 slug 字符串

pypinyin module

style example

from pypinyin import pinyinfor i in range(15):print("i=", i)print("".join([i[0] for i in pinyin("啊什么,你说计算机?", style=i, heteronym=False)]))

i= 0
ashenme,nishuojisuanji?
i= 1
ashénme,nǐshuōjìsuànjī?
i= 2
ashe2nme,ni3shuo1ji4sua4nji1?
i= 3
shm,nshjsj?
i= 4
asm,nsjsj?
i= 5
aene,iuoiuani?
i= 6
aéne,ǐuōìuànī?
i= 7
ae2ne,i3uo1i4ua4ni1?
i= 8
ashen2me,ni3shuo1ji4suan4ji1?
i= 9
aen2e,i3uo1i4uan4i1?
i= 10
ㄚ˙ㄕㄣˊㄇㄜ˙,ㄋㄧˇㄕㄨㄛㄐㄧˋㄙㄨㄢˋㄐㄧ?
i= 11
ㄚㄕㄇ,ㄋㄕㄐㄙㄐ?
i= 12
ашэнь2мэ,ни3шуо1цзи4суань4цзи1?
i= 13
ашм,ншцсц?
i= 14
ashenme,nishochisuanchi?

  • 拼音风格问题
  • 多音字问题

有趣的应用:寻找同音字

完整代码

from pypinyin import pinyindef get_jokesrt(jokestr):return "".join([i[0] for i in pinyin(jokestr, style=1, heteronym=False)])def find_jokes(name, style=1, path="sentences.txt", heteronym=False, COUNT=10):jokestr = get_jokesrt(name)count = 0with open(path, "r", encoding='utf-8') as file:for line in file:linestr = line.strip()if jokestr in get_jokesrt(linestr):print(linestr)print("##")count += 1if count >= COUNT:break

find_jokes("睿雯")

  •  问题
    • 没有实现字与音的一一对应

改进后的代码

from pypinyin import pinyin
import pypinyin def get_jokestr(jokestr):return pypinyin.slug(jokestr, style=1, separator="-") + "-"def printf(name, linestr, separator="-"):print(linestr)jokestr = get_jokestr(name)textstr = get_jokestr(linestr)index1 = textstr.find(jokestr)index2 = textstr[:index1].count(separator)newstr =  linestr[:index2]newstr += "¥" * len(name)newstr += linestr[len(name) + index2:]print(newstr)return [linestr, newstr]def find_jokes(name, style=1, path="file.txt", heteronym=False, COUNT=3):jokestr = get_jokestr(name)count = 0with open(path, "r", encoding='gbk') as file:for line in file:linestr = line.strip()if jokestr in get_jokestr(linestr):printf(name, linestr)print("##")count += 1if count >= COUNT:breaktest_str = "睿雯"
find_jokes(test_str)

常用到的几个内置函数

  • strip()
    • 用于去除字符串两端的指定字符(默认为空格)的函数
  • find()
  • count()
    • 统计字符串中指定子串出现的次数
  • lower()、upper()
    • 将字符串转换为小写和大写
  • islower()、isupper()
    • 判断字符串是否全为小写或大写
  • capitalize()
    • 将字符串的首字母转换为大写,其他字母转换为小写
  • title()
    • 将字符串中每个单词的首字母转换为大写
  • isalpha()、isdigit()、isalnum()
    • 判断字符串是否全为字母、数字、字母和数字的组合
  • startswith(substring)、endswith(substring)
    • 判断字符串是否以指定的子串开始或结束
  • replace(old, new)
    • 将字符串中的指定子串替换为新的子串
  • split(separator)
    • 将字符串按照指定的分隔符分割成列表
  • index(substring)
    • 在字符串中查找指定子串,返回第一次出现的索引
  • join(iterable)
    • 将可迭代对象中的元素连接成一个字符串。
  • isdigit()
    • 判断字符串是否全为数字字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/21918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot+vue农产品特产商城销售平台_50kf2 多商家

随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;南阳特产销售平台展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;为解决…

2023年测试岗,手动测试vs自动化测试,“我“该如何抉择...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 在软件测试行业中…

OpenCL编程指南-9.1命令、队列、事件

概述 命令队列是OpenCL的核心。平台定义了一个上下文&#xff0c;其中包含一个或多个计算设备。每个计算设备可以有一个或多个命令队列。提交到这些队列的命令将完成OpenCL程序的具体工作。 在一个简单的OpenCL程序中&#xff0c;提交到一个命令队列的命令会按顺序执行。一个…

windows下mysql的下载与安装

文章目录 1 下载2 安装目录下新建data文件夹和my.ini3 安装4设置密码与远程连接5 配置环境变量6 navicate连接成功 1 下载 官网地址 https://www.mysql.com/点击下载 社区下载 社区服务 选择版本下载 2 安装目录下新建data文件夹和my.ini my.ini 内容如下 [mysql] # 设置my…

【C#学习笔记】内存管理

文章目录 分配内存释放内存GC标记清除算法分代算法 .NET的GC机制有这样两个问题&#xff1a; 官方文档 自动内存管理 自动内存管理是CLR在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言&#xff0c;这就意味着…

二次开发了个寂寞之HttpRunnerManager接口测试管理平台

文章目录 一、背景1、二次开发1.1、首页1.2、项目列表1.3、用例列表1.4、新增用例1.5、测试套件1.6、查看报告 二、总结 一、背景 自入职起&#xff0c;就在公司内部引入开源接口测试平台&#xff0c;选一个大家勉强看得懂源码的开源项目&#xff0c;方便后续的二次开发&#x…

【每日一题】—— C. Mocha and Hiking(Codeforces Round 738 (Div. 2))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

Kotlin~Visitor访问者模式

概念 将数据结构和操作分离&#xff0c;使操作集合可以独立于数据结构变化。 角色介绍 Visitor&#xff1a;抽象访问者&#xff0c;为对象结构每个具体元素类声明一个访问操作。Element&#xff1a;抽象元素&#xff0c;定义一个accept方法ConcreteElement&#xff1a;具体元…

docker 资源限制

目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup&#xff08;Control Group 控制组&#xff09;实现容器对物理资…

Android 性能调优之bitmap的优化

背景 Android开发中&#xff0c;加载图片过多、过大很容易引起OutOfMemoryError异常&#xff0c;即我们常见的内存溢出。因为Android对单个应用施加内存限制&#xff0c;默认分配的内存只有几M&#xff08;具体视不同系统而定&#xff09;。而载入的图片如果是JPG之类的压缩格…

【unity】Pico VR 开发笔记(视角移动)

【unity】Pico VR 开发笔记&#xff08;视角移动&#xff09; 视角移动是简单的基础功能&#xff0c;这里区别于头显定位获得的小范围位移&#xff0c;是长距离不影响安全边界的位移方式。的常见的位移方式有两种&#xff0c;其一是触发后瞬间传送到指定位置&#xff0c;其次是…

IDEA用Gradle构建项目时,lombok插件无效的解决办法

Lombok 可用来帮助开发人员消除 Java 的重复代码&#xff0c;尤其是对于简单的 Java 对象&#xff08;POJO&#xff09;&#xff0c;比如说getter/setter/toString等方法的编写。它通过注解实现这一目的。 正确使用姿势 一、安装Lombok插件 菜单栏File -> Settings ->…

死锁的发生原因和怎么避免

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;项目场景&#xff1a;示例:通过蓝牙芯片(HC-05)与手机 APP 通信&#xff0c;每隔 5s 传输一批传感器数据(不是很大) 问题描述 死锁&#xff0c;简单来说就是两个或者两个以上的线程在…

翻转卡片游戏(力扣)

题目 在桌子上有 n 张卡片&#xff0c;每张卡片的正面和背面都写着一个正数&#xff08;正面与背面上的数有可能不一样&#xff09;。 我们可以先翻转任意张卡片&#xff0c;然后选择其中一张卡片。 如果选中的那张卡片背面的数字 x 与任意一张卡片的正面的数字都不同&#…

【C语言进阶】数据的存储----整型篇

​ &#x1f341; 博客主页:江池俊的博客 &#x1f4ab;收录专栏&#xff1a;C语言——探索高效编程的基石 &#x1f4bb; 其他专栏&#xff1a;数据结构探索 ​&#x1f4a1;代码仓库&#xff1a;江池俊的代码仓库 &#x1f3aa; 社区&#xff1a;GeekHub &#x1f341; 如果觉…

Liunx环境下git的详细使用(gitee版)

Liunx环境下git的详细使用&#xff08;gitee版&#xff09; 1.git是什么2.git操作2.1在gitee创建一个仓库2.2.gitignore2.3.git 3.git三板斧3.1add3.2 commit3.3push 4.git其他命令4.1查看当前仓库状态4.2查看提交日志4.3修改git里面文件名称4.4删除文件4.5修改远端仓库内容 1.…

postgresql表膨胀处理之pgcompacttable部署及使用

环境&#xff1a; 1&#xff09;redhat-release&#xff1a;CentOS Linux release 7.6.1810 (Core) 2&#xff09;database version&#xff1a;postgresql 14.6 一、添加pgstattuple pgcompacttable工具使用过程中需要依赖pgstattuple&#xff0c;因此需先添加pgstattuple…

【SEO基础】百度权重是什么意思及网站关键词应该怎么选?

百度权重是什么意思及网站关键词应该怎么选&#xff1f; 正文共&#xff1a;3253字 20图 预计阅读时间&#xff1a;9分钟 ​ 1.什么是网站权重&#xff1f; 这段时间和一些朋友聊到网站权重以及关键词&#xff0c;发现蛮多人对于这两个概念的认知还是存在一些错误的&#xf…

数组的使用(逆序、冒泡)

内存连续数据类型相同从0开始索引 找出数组中的最大值 #include <iostream> #include <stdlib.h> //随机数所在文件 using namespace std;int main() {int arr[5]{104,134,145,129,89};//初始化没有填的为0 int max0;for(int i0;i<5;i){if(arr[i]>max){ma…

203. 移除链表元素

203. 移除链表元素 题目方法1递归方法2迭代 题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 方法1递归 class Solution { public:ListNode* removeElements(ListNode* head, in…