使用Python將EPUB電子書(shū)網(wǎng)文主角換成自己
使用Python將EPUB電子書(shū)網(wǎng)文主角換成自己
最近看網(wǎng)文小說(shuō),想到一個(gè)有意思的東西,為什么不把網(wǎng)文主角換成自己的名字,這樣看起來(lái)不更有沉浸感,更加有代入感。于是便從epub文件下手。感覺(jué)只是一個(gè)很簡(jiǎn)單的文字替換功能。結(jié)果發(fā)現(xiàn)自帶的很多小說(shuō)閱讀器居然沒(méi)有這個(gè)功能。于是想到只是個(gè)很簡(jiǎn)單的字符串替換,python這不一下搞定。chatGPT,啟動(dòng)。
EPUB電子書(shū)
EPUB電子書(shū)是一種廣泛使用的電子書(shū)格式,其中的內(nèi)容通常以HTML或XHTML文件的形式存儲(chǔ)。其實(shí)如果你不嫌麻煩的話(huà),直接用calibre打開(kāi), 編輯源文件,一個(gè)個(gè)查找替換(重復(fù)幾千次就好了,笑)。
EPUB電子書(shū)本質(zhì)上是個(gè)壓縮文件,首先將它改成.zip格式,解壓縮后,就可以看到文件夾里字體,圖片,html的章節(jié),也可以繼續(xù)修改。然后壓縮成zip,再改成epub格式即可。
準(zhǔn)備工作
在開(kāi)始之前,你需要確保以下幾點(diǎn):
- Python環(huán)境:已經(jīng)安裝Python 3。我使用的是VScode編輯器,按理說(shuō),這么簡(jiǎn)單的功能,大部分編輯器都都可以
- 必要庫(kù):需要用到
zipfile
和os
庫(kù)。基本上大部分python環(huán)境都有。 - EPUB文件:準(zhǔn)備好你想要修改的EPUB文件,不確定別的mobi,awz3格式兼是否兼容
操作步驟
1.解壓EPUB文件
EPUB文件本質(zhì)上是一個(gè)ZIP壓縮包,其中包含了電子書(shū)的文本內(nèi)容、圖片和其他資源。我們需要先將其解壓。
2.遍歷并修改章節(jié)內(nèi)容
遍歷解壓后的文件,找到所有包含文本內(nèi)容的HTML或XHTML文件,進(jìn)行字符串替換。
3.重新打包
將修改后的文件夾重新打包成EPUB格式,以供閱讀器正常識(shí)別。
Python實(shí)現(xiàn)代碼
以下是完整的Python代碼示例:
import zipfile import os # 設(shè)置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') # 遍歷解壓文件夾,修改章節(jié)內(nèi)容 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) # 保存修改后的內(nèi)容 with open(file_path, 'w', encoding='utf-8') as f: f.write(modified_content) # 壓縮修改后的內(nèi)容為新的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}')
重點(diǎn)是下面幾行
epub_path = 'book.epub'#源文件的名字,建議放在同一個(gè)文件夾,直接運(yùn)行。不在一個(gè)文件夾要輸入地址 old_name = 'name1'#原主角的名字 new_name = 'your_name'#你的名字 output_epub_path = 'book.epub'#新的電子書(shū)的名字
代碼解析
- 解壓EPUB文件:使用
zipfile
庫(kù)解壓EPUB文件到指定目錄。 - 查找與替換:遍歷目錄中的
.html
和.xhtml
文件,替換主角名字。 - 重新打包:將修改后的內(nèi)容壓縮成新的EPUB文件。
- 清理:使用
shutil.rmtree()
刪除臨時(shí)解壓目錄。
挺有意思的小玩具,但是實(shí)際使用,發(fā)現(xiàn),如果用自己的名字,還是有點(diǎn)太尷尬,建議改成自己的網(wǎng)名,尷尬少很多。另外,對(duì)于外國(guó)名字更好,只有名,不會(huì)有別的變體。中文名字變體太多,問(wèn)題太多。
果然還是實(shí)際上實(shí)踐,更有意思呢,不然學(xué)了東西真沒(méi)用。
到此這篇關(guān)于使用Python將EPUB電子書(shū)網(wǎng)文主角換成自己的文章就介紹到這了,更多相關(guān)Python EPUB電子書(shū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python?Tkinter庫(kù)GUI編程創(chuàng)建圖形用戶(hù)界面
這篇文章主要為大家介紹了用Python?Tkinter庫(kù)GUI編程創(chuàng)建圖形用戶(hù)界面,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Python使用PIL庫(kù)將PNG圖片轉(zhuǎn)換為ICO圖標(biāo)的示例代碼
在軟件開(kāi)發(fā)和網(wǎng)站設(shè)計(jì)中,ICO圖標(biāo)是一種常用的圖像格式,特別適用于應(yīng)用程序圖標(biāo)、網(wǎng)頁(yè)收藏夾圖標(biāo)等場(chǎng)景,本文將介紹如何使用Python的PIL庫(kù)將PNG圖片轉(zhuǎn)換為ICO格式的圖標(biāo)文件,需要的朋友可以參考下2025-03-03使用Python的package機(jī)制如何簡(jiǎn)化utils包設(shè)計(jì)詳解
這篇文章主要給大家介紹了關(guān)于使用Python的package機(jī)制如何簡(jiǎn)化utils包設(shè)計(jì)的相關(guān)資料,文中通過(guò)示例代碼的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-12-12python淘寶搶購(gòu)腳本程序?qū)崿F(xiàn)
大家好,本篇文章主要講的是python淘寶搶購(gòu)腳本程序?qū)崿F(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下2022-02-02Python實(shí)現(xiàn)PDF頁(yè)面的刪除與添加功能
在處理PDF文檔的過(guò)程中,我們時(shí)常會(huì)需要對(duì)PDF文檔中的頁(yè)面進(jìn)行編輯操作的情況,如插入和刪除頁(yè)面,通過(guò)添加和刪除PDF頁(yè)面,我們可以增加內(nèi)容或?qū)Σ恍枰膬?nèi)容進(jìn)行刪除,本文將介紹如何使用Python代碼實(shí)現(xiàn)在PDF文檔中添加和刪除頁(yè)面2024-04-04用Python寫(xiě)一個(gè)模擬qq聊天小程序的代碼實(shí)例
今天小編就為大家分享一篇關(guān)于用Python寫(xiě)一個(gè)模擬qq聊天小程序的代碼實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03快速了解Python開(kāi)發(fā)中的cookie及簡(jiǎn)單代碼示例
這篇文章主要介紹了快速了解Python開(kāi)發(fā)中的cookie及簡(jiǎn)單代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01