Python玩转《生僻字》

  • 最终效果
  • 思路
  • pypinyin库
  • 读写txt文本
  • 拼接
  • 回顾
  • 代码下载
  • 最后

茕茕孑立 沆瀣一气

踽踽独行 醍醐灌顶

绵绵瓜瓞 奉为圭臬

龙行龘龘 犄角旮旯

娉婷袅娜 涕泗滂沱

呶呶不休 不稂不莠

一首《生僻字》,考验的是“语文”硬实力。倘若实力不够,其实可以拿Python来凑,毕竟库多!今天就来说一个神奇pypinyin库,库如其名,python版本的拼音库。也很简单,可以将汉字转为拼音。

最终效果

个人最喜欢print到命令行中的样式

当然,正规的操作是读取汉字txt文本,通过代码生成注音版本:

思路

很简单,拼音库可以把汉字转化为拼音,那我们要做的就是读取文本,获取拼音,最后将文本和拼音重新拼接。高深的算法没有,基本围绕字符串和列表的操作拼接,有兴趣的朋友可以体验下。

pypinyin库

首先是安装,pip install pypinyin

装好后引入模块from pypinyin import pinyin

直接调用 pinyin(“生僻字”),即可得到拼音列表 [[‘shēng’], [‘pì’], [‘zì’]]

读写txt文本

基本是入门阶段读写txt文件的简单应用:

txt_name = "生僻字"
with open("%s.txt"%txt_name,encoding="UTF-8-sig") as f:content = f.read()input_str = content
result = transfer(input_str)
print(result)
with open("%s_拼音.txt"%txt_name,'w',encoding='UTF-8-sig') as m:m.write(result)

拼接

这里涉及到中文字符占2个字节,写入txt时编码格式的选择,摸索半天勉强做到大致上一一对应。

def transfer(text):#去除字符串中空格no_space_text = ''.join(text.split(" "))raw_list = []temp = ""for i in range(len(no_space_text)):if is_Chinese(no_space_text[i]):if temp != "":raw_list.append(temp)temp=""raw_list.append(no_space_text[i])else:temp+=no_space_text[i]#生成拼音列表pylist = pinyin(no_space_text)#将拼音列表和字符串拼接对齐text_list = []pinyin_list = []for i in range(len(raw_list)):if is_Chinese(raw_list[i]):pinyin_list.append(pylist[i][0].ljust(6, ' '))text_list.append(raw_list[i].ljust(5,' '))else:pinyin_list.append(pylist[i][0])text_list.append(raw_list[i])pinyin_str = ''.join(pinyin_list)text_str = ''.join(text_list)pinyin_line_list = pinyin_str.split('\n')text_line_list = text_str.split("\n")final_result = ""for i in range(len(pinyin_line_list)):final_result += pinyin_line_list[i] + '\n' + text_line_list[i] + "\n"return final_result

回顾

最初是在接触一个读取剪贴板内容的pyperclip模块,琢磨对剪贴板中字符串如何操作。正好又听到生僻字那首歌,想到既然逐字查拼音是个麻烦事,何不通过Python来批量添加拼音呢?幸运的是还真有大牛写了拼音库,可以拿来直接用。

昨天完成的代码,是对剪贴板中复制的内容添加拼音,感觉实用性不强且不方便,故今天修改为读取txt文本生成注音版本。

另注:示例中对"腌臢"的注音是"yan za",原因是该拼音库暂时只收录了简体版“腌臜”“a za”,对繁体版还未添加。

代码下载

Github代码下载

代码中有两点,在这记录下:

  1. 读写txt文档时,encoding="UTF-8-sig"是为了去除utf-8带的BOM头’\ufeff’
  2. 通常汉字都在’\u4e00’ 和 '\u9fff之间,但是生僻字如“㙓” 位于拓展库 ‘\u3400’ 到 '\u4DB5’之间
    参考链接

最后

最后再放个《离骚》文本的注音版,还不错,嘿~

Python玩转《生僻字》相关推荐

  1. python将txt转为字符串_Python 玩转生僻字

    茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...

  2. python输出大字号汉字_Python print 玩转点阵字

    学python3第一句大概率是 print("hello world") 吧,既然可以逐行逐个地输出字符,那么把字符组成汉字应该也不难吧?经过一番搜索与尝试,实现了通过python ...

  3. python将txt转为字符串_Python玩转《生僻字》

    茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...

  4. Python 玩转《生僻字》

    茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...

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

    装13的冷场 "龙生九子,各不相同-" 囚牛.睚眦.嘲风.蒲牢.狻猊.霸下.狴犴.负屃.螭吻. 都说提笔忘字丢人,可至少还有提笔的机会.随着信息化时代的普及,原来越多的人成了半文盲 ...

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

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

  7. Python print 玩转点阵字

    Python print 玩转点阵字 效果图 点阵字 HZK16字库 实现单字 单字代码 命令行中效果 pycharm编辑器中效果 实现多字 多字代码 多字命令行效果 pycharm编辑器多字效果 最 ...

  8. python print 字体大小_Python print 玩转“点阵字”

    原标题:Python print 玩转"点阵字" 学习python3第一句大概率是 print("hello world") 吧?既然可以逐行逐个地输出字符,那 ...

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

    装13的冷场 "龙生九子,各不相同-" 囚牛.睚眦.嘲风.蒲牢.狻猊.霸下.狴犴.负屃.螭吻. 都说提笔忘字丢人,可至少还有提笔的机会.随着信息化时代的普及,原来越多的人成了半文盲 ...

最新文章

  1. docker的常用命令汇总
  2. ActiveReports 6.0 - 高效开发UI
  3. php中退出怎么写,php中退出登录怎么写
  4. ArrayList和HashMap遍历比较
  5. python僵尸进程和孤儿进程_进程3.0——进程状态与僵尸进程、孤儿进程
  6. android Baseadapter 和 ViewHolder的使用
  7. python机器学习库keras——CNN卷积神经网络识别手写体
  8. matlab memorySian,matlab内存溢出的解决方案
  9. ad16自动布线设置规则_未来的PCB协同设计制造过程离不开自动化工具
  10. springboot源码 红色J_通达信精准指标,精确箱体——(主图 源码)介绍
  11. java排队系统模型,排队论模型(三):M / M / s/ s 损失制排队模型
  12. Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用
  13. office2019初体验与kms服务器搭建
  14. faststone capture截图,怎么截不出图?关于FastStone Capture无法截图、FastStone Capture捕捉矩形区域之后没反应、
  15. 备案服务器查询网站,网站服务器备案查询
  16. V831——识别指定的人脸
  17. 修复登录答题微信小程序源码下载
  18. 【Unity】关于U3d与bip骨骼适配
  19. 谷歌浏览器Chrome错误代码:ERR_CONNECTION_ABORTED
  20. Bacteria(优先队列)

热门文章

  1. blur事件与click事件的冲突
  2. 微信小程序_调用openAi搭建虚拟伙伴聊天
  3. 对于react的json.parse解析错误
  4. 深度学习秋招面试题集锦(一)
  5. syslog与syslog服务器的配置
  6. 一篇文章学会eggjs做后端服务及各种问题处理
  7. JavaPoet动态生成代码,高薪程序员必会
  8. 基于改进禁忌搜索算法求解TSP问题(Matlab代码实现)
  9. CEPH(详解+配置)
  10. 一个ONLYOFFICE编辑器的在线演示地址