茕茕孑立 沆瀣一气
踽踽独行 醍醐灌顶
绵绵瓜瓞 奉为圭臬
龙行龘龘 犄角旮旯
娉婷袅娜 涕泗滂沱
呶呶不休 不稂不莠

这首《生僻字》,考验的是“语文”硬实力。倘若实力不够,其实可以拿Python来凑,毕竟库多!今天就来说一个有意思的pypinyin库,名字很直白,是python版的拼音库,用来将汉字转为拼音。

先来看下代码运行效果,比较喜欢将结果print到命令行中的样式:

当然,正规的操作是读取汉字txt文本,通过代码生成注音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)

拼接

首先会对读入的文本进行整理,去除多余的空格,将字符串中的汉字与列表中的拼音一一对应并拼接。

由于中文字符占两个字节,以及读写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来批量添加拼音呢?很幸运,还真有大佬写了这个pypinyin库,在Github上也已有1500多颗星了~

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

代码下载

Github代码下载

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

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

最后

最后再放个《离骚》文本的注音,先txt文本:

以及偏爱 的命令行 格式 :

后记:示例中,“腌臢”被注音成了"yan za",原因是该拼音库只 收录了简体版的“腌臜”并未有收“腌臢 ”,修改为简体版后会显示正常。

python将txt转为字符串_Python玩转《生僻字》相关推荐

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

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

  2. python将txt转为字符串_python做第一只小爬虫

    "受尽苦难而不厌,此乃修罗之路" 本文技术含量过低,请谨慎观看 之前用R语言的Rcurl包做过爬虫,给自己的第一感觉是比较费劲,看着看着发际线就愈加亮眼,最后果断丢之.不过好的是和 ...

  3. python按年月日输出字符串_python日期时间转为字符串或者格式化输出的实例

    python日期时间转为字符串或者格式化输出的实例 如下所示: 年月日时分秒 >>> print datetime.datetime.now().strftime("%Y- ...

  4. python读取路径中字符串_python实现提取str字符串/json中多级目录下的某个值

    字符串多级目录取值: 比如说: 你response接收到的数据是这样的. 你现在只需要取到itemstring 这个字段下的值.其他的都不要! 思路就是:字符串是个json格式(或转为json格式), ...

  5. python处理多行字符串_python多行字符串

    Python中如何处理长代码格式化问题,如何提高格式化输出的长字符串的可读性? 当我们需要格式化输出一个很长的字符串的时候,都写在一行显得很难看,而且可读性也很差:当我们使用链式的语法写代码的时候常常 ...

  6. python用户输入一行字符串_python字符串练习

    1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7-位上的字符) 例如: 输入'abcd1234 ' ** 输出'bd24'** str1 = input('请输入:') for it ...

  7. python替换txt指定内容_python 实现类似sed命令的文件内容替换

    #!/usr/bin/env python #_*_coding:utf-8 _*_ #replace()方法把字符串中的 old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换 ...

  8. python 只取年月日 字符串_Python基础:数据类型和变量amp;字符串和编码

    Python基础:1.数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网 ...

  9. python的txt导入数据库_python将txt文档每行内容循环插入数据库的方法

    如下所示: import pymysql import time import re def get_raw_label(rece): re1 = r'"([\s\S]*?)": ...

最新文章

  1. 手把手教你用FineBI,快速搭建可视化驾驶舱
  2. R 中同步进行的多组比较的包:npmc
  3. wordpress配置google search console失败_Wordpress在国内无法打开后台撰写新文章的解决办法...
  4. Androidstudio代码自动提示不出来解决方法
  5. JQuery实战图片特效-遁地龙卷风
  6. 【comsol快速入门】
  7. php三极管导通条件,关于NPN三极管的导通条件分析
  8. 电气器件系列二十二:调速电机
  9. 几何分布GeometricDistribution
  10. 正交匹配追踪算法OMP(Orthogonal Matching Pursuit)
  11. 芝法酱躺平攻略(5)—— SpringBoot编写公主连结公会战报刀工具
  12. Laravel学习记录--访问器与修改器
  13. 与亚马逊Amazon Device EDI进行测试都有哪些场景?
  14. 互联网快讯:华虹虹芯基金正式发起成立;极米高性能投影产品获用户青睐;中国电信联手钉钉研发“天翼钉”
  15. 写bug的日常——KeyError错误原因
  16. iis网站访问默认到html文件,mvc vs iis默认页面
  17. 基于java糖助手服务交流平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  18. PCA主成分分析的matlab实现以及可视化
  19. 中秋佳节,有情怀的区块链开发者都怎么过?
  20. 图像几何变换时为何要用到插值算法?_图像超分辨率技术-简介

热门文章

  1. 好的代码是优质资产、莫让代码成为负债
  2. 免费PPT模板 | 《超能陆战队》暖心大白通用演示PPT模板
  3. pagerank算法详解
  4. 没有观众没有新片:美国电影院的悲情寒冬
  5. 【设计灵感】产品设计中的灵感来源于日常生活
  6. SAP ABAP ALV控制显示的网格中的每一个字段属性
  7. nginx日志---log_format详解
  8. 基于MATLAB的静电场模拟系统
  9. sqlserver查询今日和昨日数据
  10. 网间数据摆渡如何轻松实现数据安全交换