装13失败后,我决定使用Python为生僻字批量注音

分享一次批量文件翻译的开发过程 分享一次批量文档翻译的开发过程 最近工作过程中,需要对一批文件进行汉译英的翻译,对单个文档手工复制、粘贴的翻译方式过于繁琐,考虑到工作的重复性和本人追求提高效率、少动手(懒),想通过调用已有的接口的方法,自己实现一个批量翻译工具,一劳永逸。在网上找了几款翻译api,通过对比翻译的结果和学习成本,选择了有道智云的服务,自己开发了一个批量翻译的小软件。详细记录一下使用和开发过程,后面的小伙伴们有相关需求,可以参考。 批量文档翻译工具的使用 我这里开发批量文档翻译工具使用python作为开发工具,功能如下:    阅读详情
装13的冷场

“龙生九子,各不相同...”
囚牛、睚眦、嘲风、蒲牢、狻猊、霸下、狴犴、负屃、螭吻。

都说提笔忘字丢人,可至少还有提笔的机会。随着信息化时代的普及,原来越多的人成了半文盲。怎么说?电脑前打字敲的一二一,可提起笔来就忘字。从前特别喜欢钢笔,笔袋里放的凌美、百利、永生、英雄一堆,买的北碳、毕加索、派克、百利金各式牌子的墨水。结果感觉半年多都没动过这些陈年老货了。
下午聊天装13说到龙生九子,本来吹得正欢,结果朋友问老七 bì àn怎么写,然后...瞬间懵逼了,这个13装的有点冷场啊。
最近项目有些忙,晚上构思该写点什么。想到下午的尴尬,决定发一篇之前写的Python为生僻字歌词注音的文章。

抖音配乐--生僻字

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

from pypinyin import pinyin
import re


class ChangePinyin:
    def __init__(self, filename):
        self.file = filename
        self.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))

    @staticmethod
    def 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 += string
        return word_list


if __name__ == '__main__':
    Main = ChangePinyin('lyric.txt')
    Main.write_file()

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


5847426-4079f3accb4767b9
文本注音效果.gif

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

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
希望每周一至五清晨的7点10分,都能让清风Python的知识文章叫醒大家!谢谢……

5847426-165ef1459482a125
清风Python

实用小技巧,Python一秒将全部中文姓名转为拼音! 有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种Python实现的方法,最后给一个批量操作的代码案例! 一、xpinyin 开门见山,Python中文字转拼音可以使用xpinyin,直接使用pip安装即可???? pipinstallxpinyin-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com 接着导入xpinyin下的 Pinyin 方法如下 fromxpinyinim... 阅读详情

相关推荐

使用python语言实现中文拼音标注

可以对指定文件进行拼音标注,但是换行效果好像不是很好,如果有时间会优化下

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

抖音配乐--生僻字 首次听到生僻字就是从抖音了,随着生僻字配乐使用的人越来越多,很多人翻唱、模仿甚至有讲解成语出处和寓意的段子,可谓百家争鸣。 但,有一类视频很不讨喜,就是把歌词用谐音字代替,好让人一眼认识。 如果是那些哈韩哈日的朋友们,想唱歌但又没有语言基础,那你配上谐音的字没毛病。可歌词中的成语和汉子就是老祖宗传下来的文化,你却用谐音字去让自己容易辨识,不觉得脸红吗? 如果不认...

清风Python 1038

SPSS_Process—简单&平行&链式中介模型

本篇文章介绍采用SPSS的插件Process对简单中介、链式中介、平行中介模型进行检验的操作方法及结果解读。

m0_54401011的博客 4万+

[584]python给生僻字注拼音(pypinyin库)

茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首《生僻字》,考验的是“语文”硬实力。倘若实力不够,其实可以拿Python来凑,毕竟库多!今天就来说一个有意思的pypinyin库,名字很直白,是python版的拼音库,用来将汉字转为拼音。 先来看下代码运行效果: 当然,正规的操作是读取汉字txt文本,通过代码生成注音t...

周小董 1752

Keil MDK安装NRF52832开发环境全攻略(附系统时间错误解决方案)

本文详细介绍了如何使用Keil MDK搭建NRF52832开发环境,包括基础软件安装、项目配置关键步骤以及常见问题解决方案。特别针对系统时间错误导致的编译失败问题提供了实用解决方法,帮助开发者快速上手NRF52832开发。

weixin_29168153的博客 505

用gm/Id方法设计简单折叠式共源共栅放大器

gm/Id

qq_45541367的博客 2万+

python拼音怎么写-[编程心得]用Python给汉字加上带音调的拼音

作为一个南方人,拼音没学好那似乎已是一件非常正常的事。什么卷舌音、鼻音,也只有在近几年才算是分清了一部分。但尴尬的事情仍在继续,发短信的时候,总有些字拼得不准;说话的时候,总有些字没有卷舌、或忘了加鼻音……痛定思痛,于是有了一个用SuperMemo来强化拼音的训练方案。要实现这个方案,得具备两个条件,一是选定汉字范围——舍得选的是一级国标汉字,共计3700余个;二是利用程序将这些汉字转化为拼音,要...

weixin_37988176的博客 779

Django 前后端分离实战:网络设备运维系统 - 从登录认证到业务模块

这篇文章分享了Django+Vue前后端分离开发网络设备运维系统的实战经验,重点介绍了登录认证、全局布局和设备管理三大模块的实现。文章包含以下核心内容: 登录模块实现:包括表单验证、Token认证、记住密码功能,以及美观的UI设计(渐变背景、毛玻璃效果) 全局布局架构:采用侧边栏+顶部导航的响应式设计,支持菜单权限控制和多设备适配 业务功能开发:详细展示了设备分类和部门管理的CRUD功能实现,包括列表展示、搜索过滤、分页等功能 常见问题解决:提供了5个开发中常见问题的解决方案,如Vue Router警告、C

qq_16766705的博客 526

Python实现中文转化为对应的拼音以及拼音转化为相应的中文

     由于项目的需求,在使用中文和汉语拼音的转化,自己写了一个版本,感觉很low,本质上就是读数据库,闲来查了一下,居然还真的有这样现成的库,就拿来使用一下吧,代码很简单,就是觉得挺有意思的,下面的样例代码,喜欢玩的可以拿去试试:   #!usr/bin/env python #encoding:utf-8 from __future__ import division ''' __...

Together_CZ的博客 5649

解锁RK3588 HDMI输出:分辨率与EDID的深度探索

本文详细探讨了瑞芯微RK3588处理器的HDMI输出分辨率配置与EDID解析技术。文章首先介绍了RK3588处理器的性能特点及其HDMI功能在多媒体和工业领域的应用价值,随后分别阐述了HDMI输出分辨率的硬件连接要求和软件配置方法,包括4K/8K等不同分辨率的配置实例。在EDID部分,深入解析了EDID的数据结构、交互机制,以及数据获取与修改的具体方法。最后总结了配置过程中常见问题的解决方案,并展望了RK3588在高分辨率显示领域的发展前景。全文为开发者提供了RK3588 HDMI显示配置的完整技术指南。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 592

【人工智能】《Deep Dive into LLMs like ChatGPT 》—— Andrej Karpathy 第三阶段:强化学习(Reinforcement Learning, RL)

摘要:强化学习(RL)阶段通过让模型自主生成并验证答案,突破SFT阶段的模仿局限,使其在数学、代码等领域形成独特的推理路径。RL流程包括批量生成解答、自动批改筛选正确路径,并采用PPO/GRPO算法优化模型。模型会自发涌现自我检查、回滚等策略,显著提升正确率(如AIME竞赛准确率从15%升至56%)。与SFT模型相比,RL模型具备主动链式思维、验算能力,响应时间更长但效果更优,形成真正的“思考模型”。三阶段对比显示,RL通过可验证题的对错奖励机制,赋予模型超越人类范式的推理能力。

奶爸的编程之路,也就一周冷个三天 149

python抓取word里的拼音_[DIY]给word中的汉字批量加、修改拼音(word全篇加拼音)(旧版VBA程序,缺点比较多)...

缘起:师兄发起印经,需要给word电子版的经书全文加注音。(新增golang版本的程序;比vba快,大文档用vba的能跑好几天,用golang的几秒就处理完,还不会因为中文标点出错;另有修改指定词组读音等程序;请参看:word自带的加注音只能一次加30个字,一本经书有两万四千多字。网上找了下,好像没有现成的软件,但是python可以很简单的把汉字转换成带声调的拼音。再结合office的vba宏录制...

weixin_36288992的博客 1532

手把手教你学SOME/IP「3.2.1.发布/订阅行为」

本文详细介绍了SOME/IP协议中的服务发现机制,重点解析了发布/订阅行为的流程。主要内容包括:1)服务发布与Method通信流程,涵盖find/offer报文交互、TTL保活机制及异常处理;2)服务订阅与Event通信流程,包括subscribe/ack报文交互和组播延迟机制;3)特殊场景如快速发送、半周期回复、重置订阅等机制。通过邮局订阅报纸的类比,帮助理解服务发现的核心原理,并强调流程图对于问题定位的重要性。文章为SOME/IP协议的工程实现提供了实用指导。

nihaoljq2010的博客 1222

python生僻字如何转码_装13失败后,我决定使用Python为生僻字批量注音

装13的冷场“龙生九子,各不相同…”囚牛、睚眦、嘲风、蒲牢、狻猊、霸下、狴犴、负屃、螭吻。都说提笔忘字丢人,可至少还有提笔的机会。随着信息化时代的普及,原来越多的人成了半文盲。怎么说?电脑前打字敲的一二一,可提起笔来就忘字。从前特别喜欢钢笔,笔袋里放的凌美、百利、永生、英雄一堆,买的北碳、毕加索、派克、百利金各式牌子的墨水。结果感觉半年多都没动过这些陈年老货了。下午聊天装13说到龙生九子,本来吹得...

weixin_29202687的博客 372

晶体管-二极管三极管MOS管选型参数总结

二极管三极管和MOS管,是电路中常用的控制电流电压的基本电子元器件。电路世界中晶体管的选型,需要考虑的参数多种多样,这些参数的选择会直接影响到电路的性能、稳定性、成本等多个方面。本文对二极管三极管和MOS管的选型参数进行详细介绍并总结。

fydar的博客 887

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Python为你规划十一黄金周假期!

放假?放什么假? 只有对社会没有用的人才会放假! 像我这样国家栋梁之才怎么能放假? 我就是来为人民服务的——加班、干活! 最近项目太忙了,今天娱乐下就不更文章了,提前祝大家十一快乐,哈哈。 往期文章精选 Android手机打造你的Python&Java开发工具! 来看看Python炫酷的颜色输出与进度条打印 Python开发英语单词自测工具,助你逆袭单词王! 使用Python开发小说下...

清风Python 488

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android手机打造你的Python&Java开发工具!

崩溃边缘… 最近公司很多事情,最重要的是,很多时候问题压根不出在我身上,但还得我去定位解决,为什么大家都是写代码的,我就得给你们擦屁股呢!怒从心头起,搞得错别字都发出去了,哎…晚上加完班回来坐在电脑前发呆,不知道该写点什么。想起今天领导说的要拿java写一套解密算法后,通过python调用,突然想想有阵子没学java了…然后,你们以为我要弃坑写Java的内容,No… 开发者桌面 之前写过一篇文章...

清风Python 757

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用Python批量抓取单词发音

备注:今年1月份写的文章,以后准备长期驻扎在这儿,就贴过来了。 1.12号晚上总算彻底的考完了所有的科目,昨天可以睡一个安稳的懒觉了。从床上爬起来之后,随便从书架上拿了一本书,竟然是《备战大学德语四级考试·词汇篇》,不觉想起当初“战绩辉煌”的德语课。翻开书,看了几个单词后,发现都忘记了该怎么发音,所以想把每个单词的发音放到P3里,等睡不着的时候可以听一听~。...

weixin_33939380的博客 1061

python读音有道-python实现有道翻译(逐行读文本)

本脚本调用有道的json实现翻译,不过缺点是大批量翻译时容易触发防爬虫规则,实际测试为:500条以上 易会触发规则解决方法:1.换IP(有效),本人采用的是跳板路由+VPN来解决2.使用代理(未测试)使用方法:将需要逐行翻译的句子放在一行显示,存入hack.txt,运行即可代码:import requests,refrom fake_useragent import UserAgentimport...

q6q6q的专栏 503

使用python输出所有汉字的拼音hàn-zì-pīn-yīn

想在文档中自动把汉字的拼音标注上去,可是很难,用excel或者word来辅助,操作也不方便。 万能的python,加上大神写的拼音工具插件xpinyin,几行代码,就可以把所有汉字的拼音输出!极为强悍! 1、安装xpinyin库:使用【pip install xpinyin】自动安装,或者下载后手工安装(进入下载后的插件目录,运行 python setup.py install)      ...

liuzhimayi的专栏 4312

Python实现获得所有拼音为某个拼音的所有汉字

好久没有写博客了,这几年的开发让我感受良多,同时我也感觉到了我自己成长的还不够。所以,以后这里将会有我个人所有的项目经验总结,但是更多的是自我的反思 1、项目越急,越不要急:项目急了,我就会慌起来,然后改完之后很多报错。改一个BUG,出来好几个新BUG。所以,还是建议各位,每次做东西的时候,思考的全面一点,测试的全面一点。就比如有一个控制房间的开关,加了开关之后,开关两个状态都要测试一下。说到底还是不够心细 ...

levosam的博客 2133

Flask项目能打包为单个exe文件运行?知道原理后简直不要太简单!

python打包exe工具 Python打包工具主要有三种:py2exe、PyInstaller和cx_Freeze。虽然是三种工具,但是实现打包的方式都是大同小异。无非将Python运行所需的基础dll文件和源码依赖的模块筛选后聚合在一起,从而达到脱离环境单独运行的目的。但其中比较新奇的是它们居然可以将最终代码打包成单个文件去运行,简直不要太神奇。 清风常用的打包工具为pyinstaller,安...

清风Python 9045
上一篇: 关于Python中的错误与异常,你是否了解的够仔细?
下一篇: Python自带又好用的代码调试工具Pdb学习笔记
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值