Уведомления

Группа в Telegram: @pythonsu

#1 Май 24, 2014 21:30:33

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

Ссылку посмотрел - думаю, что док конвертер можно сделать совсем по-другому.

Офлайн

#2 Май 26, 2014 23:22:01

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

Появилось свободное время - подправил doc. Сначала хотел сделать по документации, но, как я понимаю, в секции fcPlcftxbxTxt по адресу 0x025A должно быть указание на расположение таблицы, в которой перечислены начальные байты блоков текста. В имеющихся у меня файлах в этом месте либо нули, либо ff. Здесь и остановился.
В общем переписал по-другому. Хочется узнать, как избавиться от global и буду рад, если кто-нибудь в свободное время на этом конкретном примере объяснит, как переписать, используя классы.
P.S.: Для меня идея актуальна, использую на книжке NST. Компьютер не всегда под рукой, а CoolReader .docx не читает. Поэтому, например когда скачаю из интернета такой документ, похожим скриптом в одно нажатие конвертирую в текст - дальше можно читать без проблем

Прикреплённый файлы:
attachment pyall2txt.py (5,3 KБ)

Офлайн

#3 Май 26, 2014 23:37:46

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

И ради любопытства хотелось бы знать: почему, когда обрабатываю к-н док

doc_name[1] is '.doc' -> False
doc_name[1] == '.doc' -> True ?
type(doc_name[1]) -> 'str'
А если так:
'str' is 'str' -> True
Думал, что is и == работает одинаково, или близко к тому. В чём разница?

Офлайн

#4 Май 27, 2014 22:07:15

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

>>> 2 == 2.
True
>>> 2 is 2.
False
>>> 



Офлайн

#5 Май 27, 2014 23:59:32

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

Перечитал про ==, is, разницу прояснил.
Будут лучшие времена, разберусь, как классы использовать, обновлю.
Всем, кто проявил участие и терпение - спасибо.

Офлайн

#6 Май 28, 2014 00:47:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9798
Репутация: +  849  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

 
 
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()



Отредактировано py.user.next (Май 28, 2014 00:49:39)

Офлайн

#7 Июнь 7, 2014 14:23:31

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

v 0.3

Прикреплённый файлы:
attachment pyall2txt.py (5,1 KБ)

Офлайн

#8 Июнь 7, 2014 21:37:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

Да вы проект заведите, а тут уведомляйте о новых версиях. См. например github или bitbucket.



Офлайн

#9 Июнь 7, 2014 22:04:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9798
Репутация: +  849  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

doza_and
См. например github или bitbucket.
Для начала курс пройти по системам контроля версий. По git'у ;)
http://git-scm.com/documentation

evgen34
v 0.3
Вот вывод (вызовы ok(), help()) не должен находиться в исполнителе (Converter), так как вывод может не требоваться (пользователя может вообще не быть).
Функция должна возвращать какое-нибудь значение или порождать исключение, по которому можно решить, что делать дальше.



Офлайн

#10 Июнь 8, 2014 17:18:12

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразователь doc, docx, odt, htm (html), fb2 в txt

Да ну, что Вы, это же несерьёзная программка. Больше для обучения.
Сейчас 128-я строчка выглядит так:

MyHTMLParser.text += data
Я бы хотел, чтобы она выглядела примерно так:
self.text += data
В таком виде в атрибут text ничего не добавляется. Можно ли не указывать имя класса?
Как работает self - тёмный лес.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version