当前位置: 首页 > news >正文

使用Python将EPUB电子书网文主角换成自己

文章目录

      • 使用Python将EPUB电子书网文主角换成自己
        • EPUB电子书
        • 准备工作
        • 操作步骤
        • Python实现代码
        • 代码解析

使用Python将EPUB电子书网文主角换成自己

最近看网文小说,想到一个有意思的东西,为什么不把网文主角换成自己的名字,这样看起来不更有沉浸感,更加有代入感。于是便从epub文件下手。感觉只是一个很简单的文字替换功能。结果发现自带的很多小说阅读器居然没有这个功能。于是想到只是个很简单的字符串替换,python这不一下搞定。chatGPT,启动。

EPUB电子书

EPUB电子书是一种广泛使用的电子书格式,其中的内容通常以HTML或XHTML文件的形式存储。其实如果你不嫌麻烦的话,直接用calibre打开, 编辑源文件,一个个查找替换(重复几千次就好了,笑)。
EPUB电子书本质上是个压缩文件,首先将它改成.zip格式,解压缩后,就可以看到文件夹里字体,图片,html的章节,也可以继续修改。然后压缩成zip,再改成epub格式即可。
在这里插入图片描述

准备工作

在开始之前,你需要确保以下几点:

  1. Python环境:已经安装Python 3。我使用的是VScode编辑器,按理说,这么简单的功能,大部分编辑器都都可以
  2. 必要库:需要用到zipfileos库。基本上大部分python环境都有。
  3. 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()删除临时解压目录。

挺有意思的小玩具,但是实际使用,发现,如果用自己的名字,还是有点太尴尬,建议改成自己的网名,尴尬少很多。另外,对于外国名字更好,只有名,不会有别的变体。中文名字变体太多,问题太多。
果然还是实际上实践,更有意思呢,不然学了东西真没用。


http://www.mrgr.cn/news/67627.html

相关文章:

  • 支持高性能结构化数据提取的 Embedding 模型——NuExtract-v1.5
  • 【JavaSE】【网络原理】初识网络
  • PGMP练-DAY18
  • vue3中setup的作用是什么?
  • 你使用过哪些MySQL中复杂且使用不频繁的函数?
  • string模拟实现find
  • .baxia勒索病毒来袭:数据恢复与防护措施详解
  • 【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
  • 【C#】创建一个主菜单和弹出菜单系统
  • 归并排序:高效算法的深度解析
  • 卷积神经网络——pytorch与paddle实现卷积神经网络
  • 用ChatGPT完成高质量文献综述全过程实操指南,用高级学术版专业应用gpts轻松搞定
  • AndroidRuntime学习总结
  • C++对象模型:站在对象模型的尖端
  • QML中Var详细介绍
  • 掌握GLM-4大模型微调技巧:入门级实战教程——命名实体识别(NER)任务
  • WebAPI 初学 Visual Studio 2022,.NET 6.0(EF 代码迁移)
  • C++ Qt6 QtQuick/QML入门进阶与项目实战视频教程
  • 【代码分支管理】你知道什么 GitFlow 吗?
  • 你是否在为如何撰写国自然基金申请书而苦恼?快来轻松掌握申请技巧!脱颖而出
  • 2024-11-6----Android 11(全志713m)----- 关于添加 Selinux 权限
  • Call For Speaker! |2025中国国际音频产业大会(GAS)演讲嘉宾征集令启动!
  • Java基础使用①Java特点+环境安装+IDEA使用
  • 奇妙的交互,真的可以实现CanOpen转Profinet吗?
  • 欧协杯:射手缺席,紫百合远征塞浦路斯
  • java冒泡排序