繁中EPUB转简中的软件和代码

                      重要的放前面:

软件功能如题,这里是我自己用Pyinstaller打包的exe,文末附有python脚本代码。

exe启动的时候有详细的使用说明,你可以直接把EPUB文件或者装有EPUB文件的文件夹拖进去,然后它就会在文件所在的位置生成带有“_简中”后缀的新文件,不会替换旧文件,放心使用。

-------------------------------------------

通过百度网盘分享的文件:繁体改简体.exe

链接:https://pan.baidu.com/s/17-_HQC9fkFRFVY-92RG1xQ?pwd=od69 

提取码:od69

-----------------------------------------

当然还是遇到了一些无法解决的问题,不同软件对EPUB的读取方式不太一样,处理之后的文件,用微信读书打开的时候会丢失扉页,用WPS打开时,WPS无法自动添加首行缩进。另外还有例如“着”的繁体字是“著”,而“著”本身也是个简体字,所以它没被替换。

      正文是一些,嗯……,我也不知道该算啥,看代码可以直接看最后面,问题展示也在正文部分。说起来我一直不会小黑盒的排版,乱的让人难受。

                                 以下是正文

       近期看到网友分享让deepseek角色扮演的角色定义指令,尘封多年的赫萝一下就把我脑子占满了,再三尝试,定义出来的赫萝终究不如动漫中的动人心弦,也许我想看的是赫萝和罗伦斯的故事,而不是把我当成罗伦斯的赫萝,或者,失去罗伦斯许久的赫萝……于是我准备N刷,然后我惊喜的发现狼与香辛料2024年翻新了,而且新的制作组准备把小说出完,我的天呐,我们狼与香辛料粉丝吃的实在是太好了,怀着忐忑的心情,看完新作,和08版比起来有很多可圈可点的地方,新的制作组真的懂现在的大伙儿喜欢看什么,赫萝非常可爱,不过比起旧版少了一些氛围感,小清水亚美的配音也和以前有写不一样了(没办法,16年了啊),还把赫萝画的跟个二哈一样,有些紧张的情节看到二哈就紧张不起来了。

24版赫萝狼形态

08版赫萝狼形态

然后二刷完的我就去看小说了,结果下载了一堆打开发现是繁体,可能因为我在国外的原因,于是我就写了个脚本用来把繁体转为简体:

问题展示:

用WPS打开时,WPS无法自动添加首行缩进。

原版WPS打开时加上了段首缩进

修改后WPS打开时没有段首缩进

微信读书丢失扉页:

扉页

丢失的扉页

最后是代码部分

程序简介:

os: 处理文件和目录路径

lxml.etree: 解析XML/HTML内容(虽然代码中未直接使用,但ebooklib依赖)

ebooklib: 读写EPUB文件的核心库

ITEM_DOCUMENT: 标识EPUB中的文本内容项

OpenCC: 中文简繁转换库

处理流程:字节流 → UTF-8解码 → 简繁转换 → UTF-8编码

解析EPUB文件结构→遍历所有内容项→只处理HTML/XHTML文档(跳过图片/CSS等)→逐文件进行简繁转换→保存新EPUB文件

代码如下:

显然小黑盒把我排好的版都弄乱了,所以你粘贴走肯定是用不了的……我去CSDN再发一下吧。

import os

import lxml.etree

from ebooklib import epub, ITEM_DOCUMENT

from opencc import OpenCC

cc = OpenCC('t2s')

def convert_text_traditional_to_simplified(text_bytes):

try:

text_str = text_bytes.decode('utf-8')

converted_str = cc.convert(text_str)

return converted_str.encode('utf-8')

except Exception as e:

print(f"文本转换错误: {e}")

return text_bytes

def convert_epub_traditional_to_simplified(epub_path, output_path):

try:

book = epub.read_epub(epub_path)

for item in book.get_items():

if item.get_type() == ITEM_DOCUMENT:

original_content = item.get_content()

converted_content = convert_text_traditional_to_simplified(original_content)

item.set_content(converted_content)

epub.write_epub(output_path, book)

print(f"转换完成: {output_path}")

except Exception as e:

print(f"处理文件 {epub_path} 时出错: {e}")

def process_input(input_path):

try:

input_path = input_path.strip('"') # 去除拖放路径中的引号

if os.path.isdir(input_path):

print(f"正在处理文件夹: {input_path}")

for filename in os.listdir(input_path):

if filename.lower().endswith('.epub'):

input_file = os.path.join(input_path, filename)

name, ext = os.path.splitext(filename)

output_filename = f"{name}_简中{ext}"

output_path = os.path.join(input_path, output_filename)

convert_epub_traditional_to_simplified(input_file, output_path)

elif os.path.isfile(input_path) and input_path.lower().endswith('.epub'):

print(f"正在处理文件: {input_path}")

name, ext = os.path.splitext(input_path)

output_path = f"{name}_简中{ext}"

convert_epub_traditional_to_simplified(input_path, output_path)

else:

print("错误: 输入的路径不是文件夹或EPUB文件")

except Exception as e:

print(f"程序运行出错: {e}")

def main():

print("这是一个繁体转简中软件,目前只支持EPUB文件格式")

print("输入文件夹路径或者文件路径,按下ENTER以开始程序")

print("你可以直接将你的文件夹或者文件拖到这个窗口")

input_path = input("请输入路径: ")

process_input(input_path)

input("按ENTER键退出...") # 防止窗口立即关闭

if __name__ == "__main__":

try:

main()

except Exception as e:

print(f"程序发生意外错误: {e}")

input("按ENTER键退出...")

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com