目录
这几天在Coursela(一个著名的MOOC平台)上报名参加了一门课程:Georgia Institute of Technology开设的Machine Design。
Machine Design是一门专业性很强的课程,主要讲述了诸如静力破坏和疲劳破坏理论、常见机械结构的分析,机械系统设计等内容。
看了一下课程整体的信息及课程安排,课程全英文授课,无任何中文资源。而且里面用到了非常多的机械类专业名词,这些词虽然在以前的工作和学习生活中有所了解,但是仅仅是中文层面,英文层面还是一片空白的状态。为了保证后面学习的流畅性,我将课程视频的字幕稿下载了下来并为自己做了一个计划:在开始每周的学习前先将预习字幕稿,了解接下来一周课程的主要内容,尤其是用到的机械相关专有名。
最终下载完成的第一周的字幕稿有11份之多。既然学习了Python
,那就用Python
编写一段程序,用来批量读取txt文件中的字幕稿并将其汇总后统一保存到一个Markdown
文档中。这样便可以免去打开11次重复的打开txt文件并粘贴复制到Markdown
文档的繁琐,可以提高转换效率。
一、所需材料
- 字幕稿文本文件若干
- Python开发环境
二、步骤
通过迭代依次打开字幕稿文本文档并读取文件内的内容
# 迭代读取字幕稿文本文档中的内容 for n in range(rangew): f=open(fname,encoding='utf-8') ftxt = f.read() text.append(ftxt)
其中:
变量
fname
存放文件的文件名。txt文档中的内容通过Python提供的
file.read()
方法获取,并将获取到的文本内容赋值给ftxt
。变量
text
为一个List
,用于存储每个字幕稿文件中的内容。通过List.append()
方法将ftxt
的内容增加到text
这个List
中。将获取的内容保存到新的
Markdown
文档中经过测试,Python可以直接打开并保存
Markdown
的文件:# 写入Markdown文档 fmd = open('subtitle.md','w') for t in range(len(text)): fmd.write(text[t]) fmd.close()
这里首先应用到了Python的
open()
函数:open()
函数可以用于打开一个文件,创建一个file
对象。open()
函数有两个参数:一个是文件名name
,即上面的transcript.md
,另一个是模式mode
,用于确定文件的打开方式,即上面的w
。通过open()
函数,程序创建并打开了一个名为subtitle.md
的文档。之后通过遍历,将上面获取到的内容依次写入
Markdown
文档。写入效果
图1 运行代码生成文档顶部 图2 运行代码生成文档(两字幕稿之间) 总结一下,程序的功能算是完成了,但是汇总后的稿件看着好不舒服:
- 生成的文件没有目录不方便快速定位不同字幕稿;
- 不同字幕稿之间没有明显的分界,不方便阅读和查找;
- 句子断句跟随视频,中间很多被换行符断开,阅读不便。
三、修改
分析一下,其实解决起来还是很简单的:
Markdown
文档中加入目录Markdown
中,要加入目录,只需要在文档正文前加入``即可。这里通过向文档中写入字幕稿前先写入
[toc]
的方式解决。为文本增加标题
为了增加辨识度且便于在文档中阅读,需要为每段字幕稿在开始的位置加入标题。
这里通过为获取到的文本前和后增加对应字符串的方式解决。
查找并替换文档中的换行符
\n
。这里选择通过使用
Python
的replace()
方法将文本中的换行符\n
替换掉,换成空格。replace()
方法需要输入2个参数,第一个参数即旧字符串(需要被替换掉的字符串),第二个参数即新字符串(需要的字符串)。
修改后的代码:
# 1 迭代读取字幕稿文本文档中的内容
for n in range(rangew):
f=open(fname,encoding='utf-8')
ftxt = f.read()
# 替换换行符为空格
chtxt = ftxt.replace('\n', ' ')
# 为Markdown文档插入标题
addfilename = '#Subtitle-' + str(n+1) + '\n' + chtxt
text.append(addfilename)
# 2 写入Markdown文档
fmd = open('transcript.md','w+')
# 写入目录
fmd.write('[toc]\n')
for t in range(len(text)):
fmd.write(text[t])
# 当前文档内容写入完成后加入换行符隔开两段内容
fmd.write('\n')
fmd.close()
代码修改后的运行效果:
四、总结
对比代码修改前后生成的Markdown
文档,代码修改后的文档颜值增加明显,十分便于阅读。
以后工作中再遇到需要进行文字稿的批量汇总,调整一下代码就可以嗖的一下完成,可以为自己节省出更多的时间给思考。