大家好,我是Python进阶。1.前言前几天有个叫【张倩】的粉丝让我看一段关于电子书英文自动翻译的代码。2.介绍这个小项目是git上一个叫[xiaolai]的大佬分享的。它看起来很新,并且是在不久前发布的,也就是14天前。一本中译约39万字的书,1.5小时左右即可处理(包括基本格式编辑)。这速度太恐怖了!下面就来看看这款神器的使用方法吧!3.电子书格式转换途径首先需要将Kindle中的电子书导出,并使用ePubor进行deDRM,然后将电子书转换为epub文件。我总是直接在亚马逊上购买,然后在我的电脑上安装一个旧版本的Kindle应用程序,右键单击书名,下载它,然后在不打开电子书的情况下退出Kindle。ePuborUltimate也是一款付费软件,可以去除旧Kindle下载的电子书的DRM;将awz文件转换为epub文件。(可以参考这个页面)然后,使用免费软件Calibre将epub转成htmlz文件(压缩包)。(我尝试使用命令行工具包pandoc,但经过比较,我发现Calibre在保留样式方面可能更好......)在终端中使用unzip命令解压htmlz存档。4、之所以选择html格式作为翻译格式,是为了保留书中大量的脚注、尾注和链接;DeepL有一个特殊的API参数来处理xml标签,tag_handling="xml";可以通过css文件随意设置显示样式,比较Flexible;可以通过插入javascript函数指定特定语言的显示(比如只显示中文);可以作为源文件转换任何格式的电子书……另外,调用tag_handling="xml"后,DeepLAPI返回的翻译非常有规律,可以保留所有html标签;并且,“返回的字符串”与“原始字符串”相同,可以作为判断该行是否已经翻译的依据,如果没有,在生成的翻译html文件中就不需要该行了反复出现...5.清理html整理html文件很麻烦。更方便的方法是使用BeautifulSoup模块。BeautifulSoup本来是一个爬虫工具,但它是一种非常方便的清理html文件的方式。下面的脚本主要完成以下任务:首先去掉html文件中的所有\n;将所有内容单独放在一条线上;将所有内容单独放在一条线上;删除所有\n里面;并在;之前添加一个空行......当然,您可以在此处进行更多您喜欢的格式清理。为方便起见,path和source_filename和target_filename是分开指定的。代码如下:importbs4importrepath="JohnLaw/"#必须有/source_filename="index.html"target_filename="index2.html"html=open(path+source_filename)htmltext=html.read()soup=bs4在文件夹名称的末尾。BeautifulSoup(htmltext)#Removeall\n...htmltext=str(bs4.BeautifulSoup(htmltext)).replace("\n","")#
