Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108

Проблема с работой с файлом docx

01.05.2020, 20:37. Показов 1591. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Константин уезжает на каникулы к бабушке в деревню, Интернет там не работает. Однако в свободное время он хотел почитать документацию на некоторые библиотеки Python. Проблема в том, что документация к библиотекам написана в формате Markdown (https://ru.wikipedia.org/wiki/Markdown) и в обычном офисном пакете не открывается нормально.

Помогите Константину и напишите функцию markdown_to_docx(text), которая принимает текст, содержащий на первой строке название документа, а потом – несколько строк с содержимым документа в формате Markdown, создаёт документ и сохраняет его в файле res.docx.

В этот раз нам немного повезло, и документация может содержать только следующие элементы:

заголовки уровней 1-6;
одноуровневые (то есть не содержащие вложенных) нумерованные и ненумерованные списки;
абзацы обычного, наклонного, жирного и наклонно-жирного текста. Стиль распространяется на весь абзац. Вложенного оформления не бывает.
На пустые строки Markdown создаются пустые строки в документе.

Формат ввода
Строка с названием документа, а затем его содержание на нескольких строках в формате Markdown в параметре text.

Формат вывода
Сохранённый на диске в директории с программой файл res.docx со сконвертированным содержимым.

Мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from docx import Document
 
 
def markdown_to_docx(text):
    docx = Document()
 
    docx.add_heading(text.split('\n')[0], 0)
 
    for i in text.split('\n'):
        if i == '\n':
            docx.add_paragraph()
            continue
        if i.startswith('#'):
            level = len(i.split()[0])
            docx.add_heading(f"{' '.join(i.split()[1:])}", level=level)
 
        if i.startswith('*') or i.startswith('-') or i.startswith('+'):
            docx.add_paragraph(f"{' '.join(i.split()[1:])}",
                               style='List Bullet')
 
        if any(i.startswith(j + '.') for j in "1234567890"):
            docx.add_paragraph(f"{' '.join(i.split()[1:])}",
                               style='List Number')
        docx.add_paragraph('', style="Intense Quote")
 
    docx.save('res.docx')
Ввод
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
test01
Абзацы создаются при помощи пустой строки. Если вокруг текста сверху и снизу есть пустые строки, то текст превращается в абзац.
 
Чтобы сделать перенос строки вместо абзаца,
нужно поставить два пробела в конце предыдущей строки.
 
Заголовки отмечаются диезом `#` в начале строки, от одного до шести. Например:
 
# Заголовок первого уровня
## Заголовок h2
### Заголовок h3
#### Заголовок h4
##### Заголовок h5
###### Заголовок h6
 
В декоративных целях заголовки можно «закрывать» с обратной стороны.
 
### Списки
 
Для разметки неупорядоченных списков можно использовать или `*`, или `-
 
File is too long to be displayed fully
Ожидаемый результат
YES
Вывод
Не совпадает количество параграфов в документе
NO
Сообщение
Different number of lines: out = 2, corr = 1

Помогите исправить, пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2020, 20:37
Ответы с готовыми решениями:

Проблема с работой с файлом xslx
Мой код: import xlsxwriter def export_check(text): workbook = xlsxwriter.Workbook('res.xlsx') checks =...

класс с структурой и работой с файлом
всем доброго вечера. хочу попросить о помощи в таком моменте,как реализация класса со структурой и работой с файлом. буду рада любому...

Работа с файлом docx
В документе есть элемент текстовое поле, нужно получить к нему доступ. К таблице нашел как (через дебаг путь нашел), а элемента текстового...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2020, 20:37
Помогаю со студенческими работами здесь

Работа с docx файлом
Нужно написать программу, которая получает на входе документ в формате docx, и название раздела документа, а затем сохраняет в новый...

Проблема с работой БП
Купил новый БП ибо старый сгорел, купил на 450 Вт подключил его и запуская компьютер выявил проблему: отсутствует звуковой сигнал и монитор...

Проблема с работой wi-fi
Привет всем. Только разрешил одну проблему - подъехала другая. Суть такова: ультрабук acer aspire v5-552g, пропадает подключение вай фай....

Проблема с работой монитора!
Добрый вечер. Случилась проблема с монитором. При включении компа он мигает, как будто в спящем режиме. Проверял на другом компе - монитор...

Проблема с работой HDD
Всех приветствую. Последнее время HDD работал нестабильно, издавал звуки вроде щелчков и скрежета. После форматирования работает приемлемо....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru