import datetime
from docx import Document
def replace_shortcodes_in_run(run, replacements):
for key, val in replacements.items():
if key in run.text:
run.text = run.text.replace(key, val)
def replace_shortcodes_in_paragraph(paragraph, replacements):
for run in paragraph.runs:
replace_shortcodes_in_run(run, replacements)
def replace_shortcodes_in_table(table, replacements):
for row in table.rows:
for cell in row.cells:
for paragraph in cell.paragraphs:
replace_shortcodes_in_paragraph(paragraph, replacements)
def replace_shortcodes(doc, replacements):
for paragraph in doc.paragraphs:
replace_shortcodes_in_paragraph(paragraph, replacements)
for table in doc.tables:
replace_shortcodes_in_table(table, replacements)
def main():
# Открыть файл template.docx
doc = Document('template.docx')
# Запросить у пользователя name и number
name = input("Введите имя: ")
number = input("Введите номер: ")
# Запросить дату или использовать текущую дату, если не указана
date_input = input("Введите дату (оставьте пустым для текущей даты): ")
if date_input:
date = date_input
else:
date = datetime.datetime.now().strftime("%Y-%m-%d")
# Замены
replacements = {
'{name}': name,
'{date}': date,
'{number}': number
}
# Заменить шорткоды в документе
replace_shortcodes(doc, replacements)
# Сохранить документ как template_{date}.docx
new_filename = f'template_{date}.docx'
doc.save(new_filename)
print(f'Документ сохранен как {new_filename}')
if __name__ == "__main__":
main()
Могу доработать, если надо, под тебя. Можно всё это обвесить всякими удобствами.