Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 1, 2011 15:38:08

beliy_shum
От:
Зарегистрирован: 2009-03-11
Сообщения: 67
Репутация: +  0  -
Профиль   Отправить e-mail  

Как из питона определить количество символов в файле .doc word 2003?

Проблема в том чтобы посчитать количество символов с пробелами, так чтобы оно совпадало с тем что word показывает.

Подскажите любой вариант.
Антиворд не подошел мне, т.к. он меняет делает преобразование форматирования и изменяет количество пробелов.

А если у кого завалялся готовый кусочек кода то буду беспредельно благодарен!

П.С. даже скрипт http://mainspy.ru/kolichestvo_simvolov правильно считает, а у меня не получается. Если бы можно было какой-то функцией достать из ворда текст с таким же преобразованием, которое совершается при копировании из ворда в обычный текстовый редактор, то это меня бы спасло.



Отредактировано (Июнь 1, 2011 16:51:57)

Офлайн

#2 Июнь 1, 2011 23:31:32

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Как из питона определить количество символов в файле .doc word 2003?

А задача позволяет воспользоваться win api?



Офлайн

#3 Июнь 1, 2011 23:54:29

f_evgeny
От:
Зарегистрирован: 2010-08-16
Сообщения: 20
Репутация: +  1  -
Профиль   Отправить e-mail  

Как из питона определить количество символов в файле .doc word 2003?

beliy_shum
Проблема в том чтобы посчитать количество символов с пробелами, так чтобы оно совпадало с тем что word показывает.
Уточняю задачу топик стартера
Работаем через UNO
Вот такой код работает.

    import uno
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
url = "file:////home/asuperevod/asuperevod/lib/python/asulib/primer/001_ru_3338_3893.doc"
url = "file:///" + fname
document = desktop.loadComponentFromURL(url,"_blank", 0, ())
document.dispose()
Не можем добраться до числа символов документа. Вроде по интроспекции добрались от ‘document’ до структуры, где должна быть информация, но она пустая. Может метод какой нужно выполнить перед чтением, а может вообще не то.

Следующая строка печатает пустую tuple:
print document.DocumentInfo.DocumentStatistic
()
А может это совсем не то?



Офлайн

#4 Июнь 1, 2011 23:55:34

f_evgeny
От:
Зарегистрирован: 2010-08-16
Сообщения: 20
Репутация: +  1  -
Профиль   Отправить e-mail  

Как из питона определить количество символов в файле .doc word 2003?

ZAN
А задача позволяет воспользоваться win api?
Не хочется еще и wine тащить в задачу.



Офлайн

#5 Июнь 2, 2011 11:52:29

beliy_shum
От:
Зарегистрирован: 2009-03-11
Сообщения: 67
Репутация: +  0  -
Профиль   Отправить e-mail  

Как из питона определить количество символов в файле .doc word 2003?

ZAN
А задача позволяет воспользоваться win api?
К сожалению нет.



Офлайн

#6 Июнь 2, 2011 21:36:11

f_evgeny
От:
Зарегистрирован: 2010-08-16
Сообщения: 20
Репутация: +  1  -
Профиль   Отправить e-mail  

Как из питона определить количество символов в файле .doc word 2003?

Решение найдено. Подсказали на
http://user.services.openoffice.org/en/forum/

import uno
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
url = "file:////home/asuperevod/asuperevod/lib/python/asulib/primer/001_ru_3338_3893.doc"
document = desktop.loadComponentFromURL(url,"_blank", 0, ())

print document.CharacterCount

document.dispose()



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version