python将txt转为字符串_Python玩转《生僻字》
茕茕孑立 沆瀣一气
踽踽独行 醍醐灌顶
绵绵瓜瓞 奉为圭臬
龙行龘龘 犄角旮旯
娉婷袅娜 涕泗滂沱
呶呶不休 不稂不莠
这首《生僻字》,考验的是“语文”硬实力。倘若实力不够,其实可以拿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代码下载
代码中有两点,在这记录下:
- 读写txt文档时,encoding="UTF-8-sig"是为了去除utf-8带的BOM头'ufeff'
- 通常汉字都在'u4e00' 和 'u9fff之间,但是生僻字如“㙓” 位于拓展库 'u3400' 到 'u4DB5'之间 参考链接
最后
最后再放个《离骚》文本的注音,先txt文本:
以及偏爱 的命令行 格式 :
后记:示例中,“腌臢”被注音成了"yan za",原因是该拼音库只 收录了简体版的“腌臜”并未有收“腌臢 ”,修改为简体版后会显示正常。
python将txt转为字符串_Python玩转《生僻字》相关推荐
- python将txt转为字符串_Python 玩转生僻字
茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...
- python将txt转为字符串_python做第一只小爬虫
"受尽苦难而不厌,此乃修罗之路" 本文技术含量过低,请谨慎观看 之前用R语言的Rcurl包做过爬虫,给自己的第一感觉是比较费劲,看着看着发际线就愈加亮眼,最后果断丢之.不过好的是和 ...
- python按年月日输出字符串_python日期时间转为字符串或者格式化输出的实例
python日期时间转为字符串或者格式化输出的实例 如下所示: 年月日时分秒 >>> print datetime.datetime.now().strftime("%Y- ...
- python读取路径中字符串_python实现提取str字符串/json中多级目录下的某个值
字符串多级目录取值: 比如说: 你response接收到的数据是这样的. 你现在只需要取到itemstring 这个字段下的值.其他的都不要! 思路就是:字符串是个json格式(或转为json格式), ...
- python处理多行字符串_python多行字符串
Python中如何处理长代码格式化问题,如何提高格式化输出的长字符串的可读性? 当我们需要格式化输出一个很长的字符串的时候,都写在一行显得很难看,而且可读性也很差:当我们使用链式的语法写代码的时候常常 ...
- python用户输入一行字符串_python字符串练习
1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7-位上的字符) 例如: 输入'abcd1234 ' ** 输出'bd24'** str1 = input('请输入:') for it ...
- python替换txt指定内容_python 实现类似sed命令的文件内容替换
#!/usr/bin/env python #_*_coding:utf-8 _*_ #replace()方法把字符串中的 old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换 ...
- python 只取年月日 字符串_Python基础:数据类型和变量amp;字符串和编码
Python基础:1.数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网 ...
- python的txt导入数据库_python将txt文档每行内容循环插入数据库的方法
如下所示: import pymysql import time import re def get_raw_label(rece): re1 = r'"([\s\S]*?)": ...
最新文章
- 手把手教你用FineBI,快速搭建可视化驾驶舱
- R 中同步进行的多组比较的包:npmc
- wordpress配置google search console失败_Wordpress在国内无法打开后台撰写新文章的解决办法...
- Androidstudio代码自动提示不出来解决方法
- JQuery实战图片特效-遁地龙卷风
- 【comsol快速入门】
- php三极管导通条件,关于NPN三极管的导通条件分析
- 电气器件系列二十二:调速电机
- 几何分布GeometricDistribution
- 正交匹配追踪算法OMP(Orthogonal Matching Pursuit)
- 芝法酱躺平攻略(5)—— SpringBoot编写公主连结公会战报刀工具
- Laravel学习记录--访问器与修改器
- 与亚马逊Amazon Device EDI进行测试都有哪些场景?
- 互联网快讯:华虹虹芯基金正式发起成立;极米高性能投影产品获用户青睐;中国电信联手钉钉研发“天翼钉”
- 写bug的日常——KeyError错误原因
- iis网站访问默认到html文件,mvc vs iis默认页面
- 基于java糖助手服务交流平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- PCA主成分分析的matlab实现以及可视化
- 中秋佳节,有情怀的区块链开发者都怎么过?
- 图像几何变换时为何要用到插值算法?_图像超分辨率技术-简介