Ответы пользователя по тегу Автоматизация обработки текста
  • Как автоматизировать заполнение бланка docx, меняя лишь часть текста?

    @Robyn_rock
    Что-то умею
    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()


    Могу доработать, если надо, под тебя. Можно всё это обвесить всякими удобствами.
    Ответ написан
    Комментировать
  • Как обрезать часть строки в Excel (Пример прикрепляю)?

    @Robyn_rock
    Что-то умею
    Через "Заменить на"
    1) "/gallery/*" заменить на пустое значение
    2) "org/*/" заменить на "org/"
    Ответ написан
    5 комментариев