Форум сайта python.su
Добрый день.
Задача следующая. Неободимо открыть файл .odt, выгрузить из него весь текст (включая разметку таблицы и формат текста, типа полуирного шрифта и т.д.) и записать всё это в другой файл.
В промежутке я редактирую считанный текст заменой конструкций типа {{ name }} на другой текст.
Как перекнуть только текст с изменениями у меня получилось, но стили и таблица при это пропадает. На месте ячеек таблицы, к примеру, пустые места.
Вытаскиваю текст таким образом:
origin_file = "g2.odt" with open(origin_file, 'r') as in_file: hzx = in_file.read() print(hzx)
Отредактировано Maksim_Agamon (Май 21, 2018 11:33:16)
Прикреплённый файлы:
g2.odt (83 байта)
Офлайн
Maksim_AgamonИ как они должны выглядеть?
Как выгрузить через скрипт python стили текста и таблицу?
Maksim_AgamonВам читать про режимы открытия файлов: http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html
open(origin_file, ‘r’) as in_file:
Офлайн
doza_andВидимо я как то не так выразился. В том odt, что я прикрепил в первом сообщении присутствуют такие модификаторы текста как: курсив, полужирный, подчеркивание. Плюс ко всему есть таблица.
И как они должны выглядеть?
#задаю имена исходного и генерируемого файлов origin_file = "g3.html" generate_file = "g4.html" #объявляю пустой список для хранения данных ячеек таблицы ods data_list = [] #читаю текст из исходного файла with open(origin_file, 'r') as in_file: hzx = in_file.read() print(hzx) #открываю генерируемый файл на запись output1 = codecs.open(generate_file, "w", encoding="utf-8") #создаю шаблон текста исходного документа t = Template(hzx) #получаю все имеющиеся данные в листе 'for_form' таблицы Program.ods doc = ODSReader(u'Program.ods', clonespannedcolumns=True) table = doc.getSheet(u'for_form') for i in range(len(table)): for j in range(len(table[i])): print (table[i][j]) d = table[i][j].encode(encoding='utf-8') data_list.append(d) #создаю контекст-переменную из списка data_list для подстановки в шаблон вместо конструкций django c = Context({"strs": data_list}) #рендер нового текста в генерируемый файл output1.write(t.render(c)) output1.close()
Отредактировано Maksim_Agamon (Май 17, 2018 15:11:44)
Офлайн