Найти - Пользователи
Полная версия: Преобразователь doc, docx, odt, htm (html), fb2 в txt
Начало » Python проекты » Преобразователь doc, docx, odt, htm (html), fb2 в txt
1 2
evgen34
Ссылку посмотрел - думаю, что док конвертер можно сделать совсем по-другому.
evgen34
Появилось свободное время - подправил doc. Сначала хотел сделать по документации, но, как я понимаю, в секции fcPlcftxbxTxt по адресу 0x025A должно быть указание на расположение таблицы, в которой перечислены начальные байты блоков текста. В имеющихся у меня файлах в этом месте либо нули, либо ff. Здесь и остановился.
В общем переписал по-другому. Хочется узнать, как избавиться от global и буду рад, если кто-нибудь в свободное время на этом конкретном примере объяснит, как переписать, используя классы.
P.S.: Для меня идея актуальна, использую на книжке NST. Компьютер не всегда под рукой, а CoolReader .docx не читает. Поэтому, например когда скачаю из интернета такой документ, похожим скриптом в одно нажатие конвертирую в текст - дальше можно читать без проблем
evgen34
И ради любопытства хотелось бы знать: почему, когда обрабатываю к-н док
doc_name[1] is '.doc' -> False
doc_name[1] == '.doc' -> True ?
type(doc_name[1]) -> 'str'
А если так:
'str' is 'str' -> True
Думал, что is и == работает одинаково, или близко к тому. В чём разница?
doza_and
>>> 2 == 2.
True
>>> 2 is 2.
False
>>> 
evgen34
Перечитал про ==, is, разницу прояснил.
Будут лучшие времена, разберусь, как классы использовать, обновлю.
Всем, кто проявил участие и терпение - спасибо.
py.user.next
 
 
class Converter:
    def doc_txt(self, ifname, ofname):
        pass
    def docx_txt(self, ifname, ofname):
        pass
    def odt_txt(self, ifname, ofname):
        pass
    def fb2_txt(self, ifname, ofname):
        pass
 
 
def convert(ifname, iftype, ofname, oftype):
 
    con = Converter()
 
    if iftype == 'doc':
        con.doc_txt(ifname, ofname)
    elif iftype == 'docx':
        con.docx_txt(ifname, ofname)
    elif iftype == 'odt':
        con.odt_txt(ifname, ofname)
    elif iftype in ('fb2', 'html'):
        con.fb2_txt(ifname, ofname)
 
 
def main():
    convert('file.doc', 'doc', 'file.txt', 'txt')
 
if __name__ == '__main__':
    main()
evgen34
v 0.3
doza_and
Да вы проект заведите, а тут уведомляйте о новых версиях. См. например github или bitbucket.
py.user.next
doza_and
См. например github или bitbucket.
Для начала курс пройти по системам контроля версий. По git'у ;)
http://git-scm.com/documentation

evgen34
v 0.3
Вот вывод (вызовы ok(), help()) не должен находиться в исполнителе (Converter), так как вывод может не требоваться (пользователя может вообще не быть).
Функция должна возвращать какое-нибудь значение или порождать исключение, по которому можно решить, что делать дальше.
evgen34
Да ну, что Вы, это же несерьёзная программка. Больше для обучения.
Сейчас 128-я строчка выглядит так:
MyHTMLParser.text += data
Я бы хотел, чтобы она выглядела примерно так:
self.text += data
В таком виде в атрибут text ничего не добавляется. Можно ли не указывать имя класса?
Как работает self - тёмный лес.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB