文/IT可达鸭

图/IT可达鸭、网络

前言

是不是学了Python之后,苦于没有项目练手?是不是看了很多关于编程视频,等到自己动手时,却怎么也做不出一个项目?

工作在一线的老程序员告诉你,别慌,让我手把手教你做项目。

本文将从以下几点入手,告诉大家做一个项目的流程:

  1. 项目背景,使用场景,就是需求分析;
  2. 对接Python包,技术难点突破;
  3. 代码架构梳理,画流程图;
  4. 分模块编写代码;
  5. 运行代码得到结果。

背景&使用场景

学前教育是一个非常热门的话题,很多家长不惜花重金,也要让自己的孩子赢在起跑线上。

其实,除了花钱给小孩报补习班,作为家长的我们也要花时间陪孩子学习。

身边很多朋友都有了小孩,大部分朋友的小孩都还在读幼儿园。这个年龄的小朋友应该还在识字学拼音的阶段,作为程序员老爹该怎么陪小朋友学习呢?

这里提出一个需求:如何快速地给一千篇童话故事标注拼音,并标注出现在童话故事中的所有多音字。

介绍python第三库

python提供了汉字转拼音的库,pypinpin

主要特性:

  1. 根据词组智能匹配最正确的拼音(需要对文本进行分词后,才能进行标注拼音);
  2. 支持多音字;
  3. 简单的繁体支持标注拼音;
  4. 支持多种不同注音风格(包括拼音、注音符号)

pypinyin有非常多的操作,在本项目中,只介绍pypinyin的五个基本操作:

1 普通模式,输出正确的拼音。

2 多音字模式,在标注拼音时,会把这个字的所有读音都标注出来。

3 只输出拼音,不标注音调。(如果可以,后续可以开发一个标注音调试卷的软件。)

4 发现拼音有错误怎么办? 这里提供了自定义拼音字典,来调整词语的拼音。

5 采用数字的形式来标注拼音的音调。

代码架构介绍

在学校学习编程的时候,每次实验课之前都要画流程图。它是项目开始前的设计图,如果没有它,开发的过程的就容易出现问题。但是,是不是一定要画成像教科书那要的流程图?我觉得不一定。

标准式的流程图

在实际开发中,需求不断在变化,开发周期一再压缩。如果一直拘泥于标准式、教科书式的流程图,那样你的开发效率必然会下降。所以,小编的原则就是,看懂就行。随手拿张纸来画,整理一下开发的思路,只要跟我对接的同事看得懂,那就很不错。如果改需求怎么办?那我就再用手工重新画一个,效率非常高。

当然了,在学习的时候,标准的流程图还是认真学习。

来,直接上项目总体流程图!

设计图做好后,就把它“翻译”成代码骨架。这里使用惯用的代码架构,“类”的写法。

只要写函数名,函数体用pass代替。

就这样,可以说,整个项目完成了30%~40%了,后面就是专注每个功能点进行单独开发。

正式接入项目(批量文章标注拼音)

分模块实现,每个模块的讲解

导入相应的python包,编写程序的静态配置信息。

类的初始化函数,也就是生成对象

对一个文本的内容,进行单词切分,再对每个单词进行标注拼音。

这里考虑到有些特殊符号无法标注拼音,所以默认标注拼音为空格,方便后续的格式化输出。

标注好拼音的单词,继续拆分成单字,输出单字列表和对应的拼音。

多音字判断,很多字都存在多个读音。为了更好标注多音字,这里只标注在同一篇文章出现的多音字(一篇文章,同一个字,两个以上的读音)。

格式化输出处理,这里使用了制表符“”,就是类似一个表格,把文本和拼音进行对齐。但是没有显示表格线,在实际项目的输出排版经常会用到。

整理上述步骤,设计单个文本标注拼音的函数。从文本读取,到拼音标注,再到输出文本。

递归访问文件,逐个文件进行处理。这块是个难点,可以通过一个例子来学习递归,“汉诺塔”递归函数。如果你理解“汉诺塔”递归函数,下面这个递归访问文件的函数应该也很好理解。或者,可以使用单步调试,来理解这个递归函数。

主流程,做一些参数校验。例如,指定文件夹是否存在,参数是否正确等等。

运行结果

编写main函数,实例化对象进行调用。

左边是没有标注的文本,右边是已经标注拼音的文本。

到这里,程序已经全部做完。

结语

这个项目还存在一个优化的地方,就是输出格式。本文介绍的代码,是修改了原文本的格式排版,标注拼音后重新排版输出。

但是,实际开发,还需要适配多种排版。一种就是标注拼音后,按原来文本的排版格式输出,在文字上方标注了拼音。还有其他不同的排版,就交给读者去研究了,另外在分享的源码中,我也把这块独立做出来了。大家根据自己的想法开发后,可以跟小编的代码比对一下。

学习python,不需要一杯奶茶钱,只需要你点个关注。如果觉得小编的文章对你有帮助,记得点个赞,顺便帮我分享出去。如果想获取源码,可以关注后,私信:python拼音,我把源码发给你。最后,感谢大家的阅读,祝大家生活愉快。

本文由 IT可达鸭 原创,欢迎关注,带你一起长知识!

paddle 标注_一看就会,手把手教你编程,批量文章标注拼音(附源码)相关推荐

  1. 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码

    前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...

  2. 数字信号 fft c源码_如何制作一个简单的人体动态识别微信小程序(附源码)

    知乎小白第一次写专栏,还请多指教. 先放成果. GitHub源码: lrioxh/HAR-applet-of-Wechat​github.com b站演示视频: 居然不需要服务器?!如何制作一个简单的 ...

  3. echarts asp mysql 源码_如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)...

    ECharts地图主要用于地理区域数据的可视化,展示不同区域的数据分布信息.ECharts官网提供了中国地图.世界地图等地图数据下载,通过js引入或异步加载json文件的形式调用地图. 本文将结合实例 ...

  4. c++贪吃蛇_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码

    在有用C写贪吃蛇的一个想法之后,上网查了几个教程,觉得不是很能看懂.恩...或者说不是一下子就能看出来思路+具体怎么实现.所以,我花了早自习的时间想了想如何用最简单的方法实现,晚上大约两个小时写了出来 ...

  5. 手把手教你开发enc424j600+Lwip以太网-送全部源码

    每个单片机爱好者以及嵌入式软件开发人员,都希望能够将设计的产品连入网络,在众多的网络通讯方式中,以太网是最经典,跨度最广的一种方式,它具备带宽大[100Mbps~1000Mbps],延时小[局域网达到 ...

  6. 服务器端配置正方教务系统,手把手带你打造一个教务系统客户端(附源码)

    本篇博客主要和大家分享编写一个学校教务系统的客户端版本,主要是关于登录以及数据获取方面,结尾还会附上本人以前编写的客户端源代码,有兴趣的可以自行下载玩耍~ 阅读本文大概需要5分钟. 前言 好久没有更新 ...

  7. pythonipo模型_【python量化】Fama-French三因子回归A股实证(附源码)

    01 三因子回归模型 Fama-French三因子回归是量化中最经典的模型之一,最早提出是在论文<Common risk factors in the returns on stocks and ...

  8. notion函数_高效工作必备,手把手教你玩转 Notion 模板(附下载)

    Notion 是一个笔记集大成者,堪称「来自未来的笔记软件」.它可以让你的笔记更加丰富多彩,图文.视频.音频并茂,同时还可以搭建知识库.做项目管理.做团队协作.做个人博客等等. 在上篇文章,A 君对 ...

  9. c语言写贪吃蛇什么水平_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码...

    #史上最详细的C语言贪吃蛇教程 #前言 在有用C写贪吃蛇的一个想法之后,上网查了几个教程,觉得不是很能看懂.恩...或者说不是一下子就能看出来思路+具体怎么实现.所以,我花了早自习的时间想了想如何用最 ...

  10. 地区json文件_【小例子】使用jQuery实现省市区三级联动显示,附源码json文件

    开发工具-intellij IDEA 需求 1.实现对json文件的读取. 2.可以在省级选择所有省名和直辖市名 3.选择一级省名后自动刷新市名 4.选择二级市名后自动刷新区名 逻辑分析 第一步:读取 ...

最新文章

  1. python websocket 客户端_aiohttp Websocket客户端和HTTP
  2. java控制器删除数据_javaWeb删除一条及多条数据
  3. vsftp认证之pam_mysql
  4. 数据结构学习笔记(七):哈希表(Hash Table)
  5. 非常详细的transformer笔记,包括XLNet, MT-DNN, ERNIE, ERNIE2, RoBERTa
  6. ICCV 2021 | 通过显式寻找物体的extremity区域加快DETR的收敛
  7. linux sftp创建多用户,linux下SFTP多用户创建
  8. 两个文件比较之comm命令
  9. 在线工具-程序员的工具箱-在线Cron表达式生成器
  10. 项目实施流程和规范模板(测试方向)
  11. HTML资产负债表和收入支出表(可动态更新)
  12. 异常:Handler sending message to a Handler on a dead thread
  13. bzoj1627 / P2873 [USACO07DEC]泥水坑Mud Puddles
  14. 计算机视觉作业(三)Scene Recognition with Bag of Words
  15. 此nbsp;夜nbsp;无nbsp;眠
  16. win7下搭载ubuntu双系统,独立引导
  17. 电脑桌面文件不见了怎么恢复?
  18. 微信公众平台服务器的官方示例代码,微信公众平台API接口(示例代码)
  19. TPS、QPS和系统吞吐量的区别和理解
  20. iphon44s图片的缩放

热门文章

  1. 联想服务器控制口登录地址_服务器常见远程管理网口及登录方式
  2. 出现连接路由器的电脑不能上网,而手机可以上网的问题的一种解决方法
  3. 【技术栈——00061】搭建关于python项目docker镜像的Dockerfile文件示例(自己的)
  4. 源代码可以申请专利和版权吗?
  5. 请教:关于爬取歌词的一点疑惑
  6. python控制excel选择区域_python针对excel的操作技巧
  7. 太阳能基站光照跟随追光逐日PLC控制系统
  8. edgy trees_将Ubuntu从Edgy升级到Feisty(6.10至7.04)
  9. 全国计算机软考中级哪个科目最简单,软考中级哪个科目比较容易考?
  10. 如何连接苹果电脑打印服务器