Python。如何将 MOBI 文件转换为文本(或 EPUB 文件)
Posted
技术标签:
【中文标题】Python。如何将 MOBI 文件转换为文本(或 EPUB 文件)【英文标题】:Python. How to convert MOBI file to a text (or EPUB file) 【发布时间】:2021-07-30 17:46:41 【问题描述】:我在将 MOBI 文件转换为 Python 中的文本时遇到问题。
我找到了这个库 - https://github.com/iscc/mobi 应该将 MOBI 转换为 EPUB,然后我发现 ebooklib 库在将 EPUB 文件转换为文本时效果很好。
问题是只有 ebooklib 似乎工作正常。如果我给它原生 EPUB 文件,一切都会正常工作。但是,如果我尝试从 mobi 库中将文件路径传递给它,那么我会收到一堆没有多大意义的错误。
而且我不知道究竟是什么原因造成的。也许我的 MOBI 文件以某种方式加密? (它们是我几个月前购买的 Humble Bundle 的原版书籍)。但是 mobi 库并没有对此抛出任何错误。
或者我不能直接传递 mobi 库生成的文件路径?也许我应该以某种方式保存这个文件,将它移动到其他文件夹,然后它才会被 ebooklib“读取”?
我的代码如下所示:
import mobi
import ebooklib
from ebooklib import epub
tempdir, filepath = mobi.extract("book.mobi")
# This throws error:
book = epub.read_epub(filepath)
# Native, normal epub file is working ok:
book = epub.read_epub("book.epub")
在我看来,错误并不能说明什么:
Traceback (most recent call last):
File "/ebooklib/utils.py", line 35, in parse_string
tree = etree.parse(io.BytesIO(s.encode('utf-8')))
AttributeError: 'bytes' object has no attribute 'encode'
【问题讨论】:
【参考方案1】:你可以把它保存为html文件
pip install mobi
比
import mobi
filepath="./example.mobi"
folder="./"
!mobiunpack -r filepath folder
所有可用选项列表here
或者在这里我提出另一种方法:
pip install mobi
pip install html2text
import mobi
import html2text
filename="test.mobi"
tempdir, filepath = mobi.extract(filename)
file = open(filepath, "r")
content=file.read()
print(html2text.html2text(content))
【讨论】:
但是这段代码不起作用。即使我将它更改为python conde,删除';',修复for循环(它没有在任何地方使用'record'?)然后它告诉我'mobi'没有'Mobi'。后来它在'book.parse()'上显示错误 -AttributeError: 'tuple' object has no attribute 'parse'
是的,由于旧的python版本检查了这个错误,我只是更改了Python3的代码
很抱歉,如果我还有一个问题。我想知道是否可以在此设置中循环页面?因为据我检查,在extract
之后我们基本上有“一个”文本字符串,没有关于页面的信息?
我认为最好的方法是检查 mobiunpack 命令的完整选项列表,否则需要一种方法来遍历它们。以上是关于Python。如何将 MOBI 文件转换为文本(或 EPUB 文件)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用python将txt文件或PDF转换为Word doc?
使用 Python 将 NetCDF 文件转换为 CSV 或文本