Epub 转 txt

# -*- coding: cp936 -*-
import sys,re,zipfile,HTMLParser,os

class GetContent(HTMLParser.HTMLParser):
    def __init__(self):
        HTMLParser.HTMLParser.__init__(self)    #HTMLParser不是new class,无法使用super
        self.content = ""

    def handle_data(self, data):
        self.content += data

re_digits = re.compile(r'(\d+)')
def embedded_numbers(s):
    pieces = re_digits.split(s)
    pieces[1::2] = map(int, pieces[1::2])
    return pieces

def sort_with_embedded_numbers(zipinfo_list):
    aux = [(embedded_numbers(zipinfo.filename), zipinfo) \
             for zipinfo in zipinfo_list]
    aux.sort()
    return [zipinfo for _, zipinfo in aux]

Files = os.listdir(os.getcwd())
Files = [f for f in Files if ".epub" in f and f.replace(".epub",'.txt') not in Files]

for fname in Files:
    fh = zipfile.ZipFile(fname)
    html_list = [ zip_info
                        for zip_info in fh.filelist
                            if zip_info.filename.endswith("html") or zip_info.filename.endswith("htm")
                ]
    html_list = sort_with_embedded_numbers(html_list)
    content_obj = GetContent()
    for html in html_list:
        content_obj.feed(fh.read(html))
    output_filename = fname.replace(".epub", ".txt")
    out_fh = open(output_filename, 'w')
    out_fh.write(content_obj.content)
    out_fh.close()
    print fname," done!"


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值