我想将.pub的epub文件写入.txt,仅获取文本,我找到了一个库来做。
import epub_conversion
f = open("demofile.txt", "a")
book = open_book("razvansividra.epub")
lines = convert_epub_to_lines(book)
for line in lines:
f.writelines(str(line.encode("utf-8")))
一切都很好,但是主要的问题是输出格式如下:
Carte electronic \ xc4 \ x83 publicat \ xc4 \ x83 cusprijinul Ministryului Afacerilor Externe \ xe2 \ x80 \ x93 Departamentul Politici pentru Rela \ xc8 \ x9bia cu Rom \ xc3 \ xa2nii de Pretutindeni.'b''b' p>'b''b''
那些字符,例如“ xc4”,我假设它们来自我语言中的特殊字符,因为这本书是用我的语言编写的。
答案 0 :(得分:0)
您正在进行不必要的编码/解码往返。
检查一下这个互动小会议:
>>> s = 'electronică'
>>> b = s.encode('utf-8')
>>> b
b'electronic\xc4\x83'
>>> str(b)
"b'electronic\\xc4\\x83'"
s
,该字符串要进行编码-您得到一个bytes
对象(请注意b'...'
表示法)。str()
,它将再次将其转换回字符串–但不是通过解码,而是使用额外的引号和转义序列。f.writelines()
时,将在内部再次对该字符串进行解码以将其写入磁盘。但是由于全部是ASCII,因此最后一步并不明显。您应该确保从头开始使用正确的编码打开文件。
这样您就不必再使用line.encode('utf-8')
。
因此:
f = open("demofile.txt", "w", encoding="utf-8")
再后来:
f.writelines(lines)
请注意,如果您使用for line in lines
,则无需执行writelines
;它已经打算与可迭代的行一起使用。
打开结果文件时,请确保使用支持UTF-8的编辑器。 值得注意的是,诸如“记事本”之类的“简单” Windows工具通常无法正确显示UTF-8文件。