使用python将epub电子书网文主角换成自己
最近看网文小说,想到一个有意思的东西,为什么不把网文主角换成自己的名字,这样看起来不更有沉浸感,更加有代入感。于是便从epub文件下手。感觉只是一个很简单的文字替换功能。结果发现自带的很多小说阅读器居然没有这个功能。于是想到只是个很简单的字符串替换,python这不一下搞定。chatgpt,启动。
epub电子书
epub电子书是一种广泛使用的电子书格式,其中的内容通常以html或xhtml文件的形式存储。其实如果你不嫌麻烦的话,直接用calibre打开, 编辑源文件,一个个查找替换(重复几千次就好了,笑)。
epub电子书本质上是个压缩文件,首先将它改成.zip格式,解压缩后,就可以看到文件夹里字体,图片,html的章节,也可以继续修改。然后压缩成zip,再改成epub格式即可。
准备工作
在开始之前,你需要确保以下几点:
- python环境:已经安装python 3。我使用的是vscode编辑器,按理说,这么简单的功能,大部分编辑器都都可以
- 必要库:需要用到
zipfile
和os
库。基本上大部分python环境都有。 - epub文件:准备好你想要修改的epub文件,不确定别的mobi,awz3格式兼是否兼容
操作步骤
1.解压epub文件
epub文件本质上是一个zip压缩包,其中包含了电子书的文本内容、图片和其他资源。我们需要先将其解压。
2.遍历并修改章节内容
遍历解压后的文件,找到所有包含文本内容的html或xhtml文件,进行字符串替换。
3.重新打包
将修改后的文件夹重新打包成epub格式,以供阅读器正常识别。
python实现代码
以下是完整的python代码示例:
import zipfile import os # 设置epub文件路径和替换名字 epub_path = 'book.epub' old_name = 'name1' new_name = 'your_name' output_epub_path = 'book.epub' # 解压epub文件 with zipfile.zipfile(epub_path, 'r') as epub_zip: epub_zip.extractall('extracted_epub') # 遍历解压文件夹,修改章节内容 for root, dirs, files in os.walk('extracted_epub'): for file in files: if file.endswith('.html') or file.endswith('.xhtml'): file_path = os.path.join(root, file) with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 替换主角名字 modified_content = content.replace(old_name, new_name) # 保存修改后的内容 with open(file_path, 'w', encoding='utf-8') as f: f.write(modified_content) # 压缩修改后的内容为新的epub文件 with zipfile.zipfile(output_epub_path, 'w') as new_epub_zip: for root, dirs, files in os.walk('extracted_epub'): for file in files: file_path = os.path.join(root, file) arcname = os.path.relpath(file_path, 'extracted_epub') new_epub_zip.write(file_path, arcname) # 清理解压目录 import shutil shutil.rmtree('extracted_epub') print(f'新的epub文件已生成:{output_epub_path}')
重点是下面几行
epub_path = 'book.epub'#源文件的名字,建议放在同一个文件夹,直接运行。不在一个文件夹要输入地址 old_name = 'name1'#原主角的名字 new_name = 'your_name'#你的名字 output_epub_path = 'book.epub'#新的电子书的名字
代码解析
- 解压epub文件:使用
zipfile
库解压epub文件到指定目录。 - 查找与替换:遍历目录中的
.html
和.xhtml
文件,替换主角名字。 - 重新打包:将修改后的内容压缩成新的epub文件。
- 清理:使用
shutil.rmtree()
删除临时解压目录。
挺有意思的小玩具,但是实际使用,发现,如果用自己的名字,还是有点太尴尬,建议改成自己的网名,尴尬少很多。另外,对于外国名字更好,只有名,不会有别的变体。中文名字变体太多,问题太多。
果然还是实际上实践,更有意思呢,不然学了东西真没用。
到此这篇关于使用python将epub电子书网文主角换成自己的文章就介绍到这了,更多相关python epub电子书内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论