抖音配乐--生僻字

首次听到生僻字就是从抖音了,随着生僻字配乐使用的人越来越多,很多人翻唱、模仿甚至有讲解成语出处和寓意的段子,可谓百家争鸣。
但,有一类视频很不讨喜,就是把歌词用谐音字代替,好让人一眼认识。
如果是那些哈韩哈日的朋友们,想唱歌但又没有语言基础,那你配上谐音的字没毛病。可歌词中的成语和汉子就是老祖宗传下来的文化,你却用谐音字去让自己容易辨识,不觉得脸红吗?
如果不认识,你可以查字典,找度娘,然后标注上拼音啊!即娱乐又长知识了。
当然有人觉得这样一个一个的查太麻烦,那是因为----你不会Python啊!
今天,我就来教教你们,怎么把文本内容自动标注拼音。

Python的拼音模块

Python的模块库API,每次进去习惯第一动作,就是右键翻译为中文。(好羞愧,个人太爱国了,所以一直排斥学英语,好不要脸的借口...)可Python的拼音模块不需要这么做,因为涉及拼音等模块肯定和中文有关系,文档自然是中文的喽。
那么Python的拼音模块是什么? pypinyin

  • 特性

    • 根据词组智能匹配最正确的拼音。
    • 支持多音字。
    • 简单的繁体支持, 注音支持。
    • 支持多种不同拼音/注音风格。
  • 安装
    pip install pypinyin
  • 使用示例
>>> from pypinyin import pinyin, lazy_pinyin, Style
>>> pinyin('中心')
[['zhōng'], ['xīn']]
>>> pinyin('中心', heteronym=True)  # 启用多音字模式
[['zhōng', 'zhòng'], ['xīn']]
>>> pinyin('中心', style=Style.FIRST_LETTER)  # 设置拼音风格
[['z'], ['x']]
>>> pinyin('中心', style=Style.TONE2, heteronym=True)
[['zho1ng', 'zho4ng'], ['xi1n']]
>>> pinyin('中心', style=Style.BOPOMOFO)  # 注音风格
[['ㄓㄨㄥ'], ['ㄒㄧㄣ']]
>>> pinyin('中心', style=Style.CYRILLIC)  # 俄语字母风格
[['чжун1'], ['синь1']]
>>> lazy_pinyin('中心')  # 不考虑多音字的情况
['zhong', 'xin']
# Python 3(Python 2 下把 '中心' 替换为 u'中心' 即可):

实现分析

起初想着,既然有了这个强大的拼音模块,那么文本批量添加拼音,岂不是分分钟的事情了吗?然后,打脸接踵而来!
首先,要实现文字上一一对应的标注拼音,每个字与拼音的长度肯定不同,没办法对其。如果要对其,就得将文字进行拆分,字与字之间添加间距。有人说简单啊,每个字的拼音最多不过6为,那我们使用列表解析式[i.just(6) for i in line]不就完了?
听起来没毛病,但是...

  • 歌词也有语气词啊,这句Wu 又双叒叕你直接按照字符串拆开成了什么鬼?
  • 一个中文在文本中占两个字符的长度,如果对齐的话,还需要识别中文和英文字符!
  • 有效字符的辨识,Wu被认为是是个有效字段,模块会对其进行合并

    pinyin('Wu 又双叒叕') -->[['Wu '], ['yòu'], ['shuāng'], ['ruò'], ['zhuó']]

中文识别

本来考虑使用正则去判断中文的,因为网上查到正则的匹配中文是[\u4e00-\u9fa5],简单测试了下,貌似没毛病
然后...代码都快写完了发现有些生僻字不再这个范围内,我擦!

'\u4e00'<='生'<='\u9fa5'
True
'\u4e00'<='僻'<='\u9fa5'
True
'\u4e00'<='字'<='\u9fa5'
True
'\u4e00'<='㙓'<='\u9fa5'
False

生僻字果然没那么好处理,但我这么追求完美的处女座大叔,怎么能容忍特例的出现呢?

解决办法

针对正则匹配问题,深入去研究,就脱离了学Python的初衷,即便解决了也收获甚微,不如换个思路。
utf-8字符编码下,一个中文字符占3个字节,但是字符的长度仅为1,那么解析中文的方式是否可以变通为:
len(bytes(str,'utf-8) == 3 and len(string) == 1)
关于文本书写,我们判断中文后,如果是汉字str.ljust(5),否则str.ljust(6)不就行了(因为一个汉字占两个字符长度)。

代码实现

# -*- coding: utf-8 -*-
# @Author  : 王翔
# @JianShu : 清风Python
# @Date    : 2019/5/18 22:53
# Software : PyCharm
# version: Python 3.6.8
# @File    : ChromePassword.pyfrom pypinyin import pinyin
import reclass ChangePinyin:def __init__(self, filename):self.file = filenameself.lyric = self.read_file()self.pinyin = []def read_file(self):with open(self.file, encoding='utf-8') as f:return f.readlines()def write_file(self):with open('New_%s' % self.file, 'w', encoding='utf-8') as f:print(self.lyric)for line in self.lyric:# print(line)if line.strip() == '':continue_new_line = re.sub(r'\s', '', line)# 行内容转拼音_pinyin = ''.join(map(lambda x: x[0].ljust(6), pinyin(_new_line)))# 根据中英文,将行内容进行字符与汉字的拆分_lyric = self.split_words(_new_line)f.write('%s\n%s\n' % (_pinyin, _lyric))@staticmethoddef split_words(words):word_list = ""tmp = ""for string in words:if len(bytes(string, 'utf-8')) == 3 and len(string) == 1:if tmp != '':word_list += tmp.ljust(6)tmp = ""word_list += string.ljust(5)else:tmp += stringreturn word_listif __name__ == '__main__':Main = ChangePinyin('lyric.txt')Main.write_file()

看看最后的实现效果吧,是不是格式很工整!

文本注音效果.gif

录屏软件为LICEcap
它是一款屏幕录制工具,支持导出 GIF 动画图片格式,轻量级、使用简单,录制过程中可以随意改变录屏范围。
好了,今天的内容就到这里,希望大家喜欢,如果觉得文章有用,记得关注支持我啊。

©本文由简书作者:清风Python 原创 如需转载请注明
欢迎大家关注我的公众号 清风Python

Python为文档批量注音(生僻字歌词为例)相关推荐

  1. python ljust 中文_python ljust 中文_Python为文档批量注音(生僻字歌词为例)

    抖音配乐--生僻字 首次听到生僻字就是从抖音了,随着生僻字配乐使用的人越来越多,很多人翻唱.模仿甚至有讲解成语出处和寓意的段子,可谓百家争鸣. 但,有一类视频很不讨喜,就是把歌词用谐音字代替,好让人一 ...

  2. python ljust 中文_Python为文档批量注音(生僻字歌词为例)

    抖音配乐--生僻字 首次听到生僻字就是从抖音了,随着生僻字配乐使用的人越来越多,很多人翻唱.模仿甚至有讲解成语出处和寓意的段子,可谓百家争鸣. 但,有一类视频很不讨喜,就是把歌词用谐音字代替,好让人一 ...

  3. 轻松输入并注音生僻字

    使用Word录入或编写某些文档资料时,有时会遇到一些不常见的生僻字,如何快速地输入并注音这些生僻字,一直是困扰很多用户的难题.其实,通过使用微软拼音输入法及Word 2010中的注音功能,可轻松快速地 ...

  4. python创建文档

    python创建文档 创建word文档 首先我们要安装会用到的三方库 在终端输入以下代码安装 pip install python-docx pillow 这里我们制作的word文档会涉及到图,我们将 ...

  5. python 帮助文档、自我解释

    现在让我们以交互方式使用 Python 来开始研究.当我们从命令行启动 Python 时,就进入了 Python shell,在这里可以输入 Python 代码,而且立刻会从 Python 解释器获得 ...

  6. 关于深度学习框架Hamaa与Python API文档生成工具Sophon

    五月两场 | NVIDIA DLI 深度学习入门课程 5月19日/5月26日一天密集式学习  快速带你入门阅读全文> 正文共1988个字,预计阅读时间12分钟. 前言 最近三个月我主要花时间在造 ...

  7. python 帮助文档,撰写函数文档,并查看函数文档

    python 帮助文档,撰写函数文档,并查看函数文档 定义函数 def test(a,b):'''参数:a:整数b:整数返回值:a+b'''return a+b 运行函数 test(11,22) 33 ...

  8. 批量处理word文件内容_word文档批量处理大师

    优秀的资源工具可以让你事半功倍! 资源下载请 回复 "领取资源"  自助领取. word文档批量处理大师软件精致,简单易用,针对性强,是特别针对Office办公软件中的Word文档 ...

  9. 亿愿Word文档批量多语言翻译---word文档翻译专家!几十种语言随意快速互译!可以生成中外文,中英文对照内容文档!

    亿愿Word文档批量多语言翻译-软件功能简介 [亿愿Word文档批量多语言翻译]采用目前最强大的.国际著名公司的谷歌翻译引擎,自动识别语言种类,把英文.日文.韩文.德文.法文.俄文等几十种外国语言的文 ...

最新文章

  1. yii2权限控制rbac之rule详细讲解(转)
  2. java 输出 三角形_Java实现输出三角形
  3. 修改jupyter的保存位置
  4. MySQL读写分离中间件解决
  5. HDU 5527:Too Rich(DFS+贪心)***
  6. 前端学习(1319):node.js异步编程
  7. android tv字体,best登陆「永久地址0365.tv」android默认字体android使用代码使用新的字体的常用代码...
  8. 标题在上边框中的html(fieldset标签)
  9. UI设计教程分享:电商网页页面设计常见表现手法
  10. 介绍4个大神常用而你不常用的python函数
  11. 进销存excel_不用再花钱买软件做进销存,这份免费的Excel系统送你,财务收
  12. tsp 近似算法 matlab,TSP问题—近似算法
  13. winform 打印快递电子面单_c#对接电子面单打印平台
  14. 京东商品3D展示怎么做?
  15. uni-app 图片自适应视图容器
  16. Bzoj4763 雪辉
  17. 1001: 植树问题 Java 某学校植树节开展植树活动,已知树苗有m株,参加植树的同学有n人(且mn),请问每位同学平均可以植树几株?还有几株剩余?
  18. APP接入微信支付流程
  19. matlab示波器导出图片,MATLAB SIMULINK 示波器 SCOPE 图片保存
  20. python 画风矢量图

热门文章

  1. 关于业务主键和逻辑主键
  2. C# 添加、修改、删除PDF书签
  3. Exception: D:\Unity\Editor\Data\il2cpp/build/il2cpp.exe did not run properly!
  4. java如何实现aes加密_Java 如何实现AES加密
  5. 快速连WiFi,你只需一个二维码
  6. 第四天,同系的大佬都已经开始研究算法了,我还在系统徘徊,是我小吴认怂了,我这进度属实有点慢啊!!
  7. kali操作系统+信息搜集工具
  8. 四十三、文件传输协议FTP、电子邮件、万维网
  9. 2021 小米前端秋招笔试题
  10. 复盘美股2020年极与极,透过7个关键节点看美股的波澜壮阔