Python pypinyin module 的应用

阅读: 评论:0

Python pypinyin module 的应用

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=&#", 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=&#", 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()
    • 判断字符串是否全为数字字符。

本文发布于:2024-02-01 15:35:24,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170677292437624.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Python   pypinyin   module
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23