Python 双语对照文件生成器

本程序使用 Python 的 docx 库读取和写入 Word 文件,以及 tkinter 库创建图形用户界面,可以实现以下功能:

  1. 用户选择一个英文 Word 文件和一个对应的中文 Word 文件。
  2. 点击“生成”按钮,程序会自动生成一个新的 Word 文件,包含英文和中文的段落对照内容。
  3. 程序会自动去除原文件中的空行,并按段落匹配英文和中文内容。
  4. 即使英文和中文段落数不匹配,程序也能生成完整的双语对照文件,并将不匹配的段落列在文件的末尾。
  5. 程序会弹出一个信息框,提示用户是否有段落不匹配的情况。

以下是程序代码:

import docx
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox

def remove_blank_lines(paragraphs):
    return [p for p in paragraphs if p.text.strip()]

def match_paragraphs(paragraphs1, paragraphs2):
    num_paragraphs = max(len(paragraphs1), len(paragraphs2))
    aligned_paragraphs = []
    for i in range(num_paragraphs):
        if i < len(paragraphs1) and i < len(paragraphs2):
            aligned_paragraphs.append((paragraphs1[i], paragraphs2[i]))
        elif i < len(paragraphs1):
            aligned_paragraphs.append((paragraphs1[i], None))
        else:
            aligned_paragraphs.append((None, paragraphs2[i]))
    return aligned_paragraphs

def create_bilingual_file():
    # Ask user to select English and Chinese files
    english_filename = filedialog.askopenfilename(title='Select English file', filetypes=[('Word files', '*.docx')])
    chinese_filename = filedialog.askopenfilename(title='Select Chinese file', filetypes=[('Word files', '*.docx')])
    if not english_filename or not chinese_filename:
        return

    # Load English and Chinese files
    english_doc = docx.Document(english_filename)
    chinese_doc = docx.Document(chinese_filename)

    # Remove blank lines from English and Chinese files
    english_paragraphs = remove_blank_lines(english_doc.paragraphs)
    chinese_paragraphs = remove_blank_lines(chinese_doc.paragraphs)

    # Match paragraphs between English and Chinese files
    aligned_paragraphs = match_paragraphs(english_paragraphs, chinese_paragraphs)

    # Create new document with bilingual text
    bilingual_doc = docx.Document()
    for english_paragraph, chinese_paragraph in aligned_paragraphs:
        bilingual_paragraph = bilingual_doc.add_paragraph()
        if english_paragraph is not None:
            bilingual_paragraph.add_run(english_paragraph.text, font=english_paragraph.style.font)
            bilingual_paragraph.add_run('	')
        else:
            bilingual_paragraph.add_run('	')
        if chinese_paragraph is not None:
            bilingual_paragraph.add_run(chinese_paragraph.text, font=chinese_paragraph.style.font)

    # Add unmatched paragraphs to end of document
    unmatched_paragraphs = []
    if len(english_paragraphs) > len(chinese_paragraphs):
        unmatched_paragraphs = english_paragraphs[len(chinese_paragraphs):]
    elif len(chinese_paragraphs) > len(english_paragraphs):
        unmatched_paragraphs = chinese_paragraphs[len(english_paragraphs):]
    if unmatched_paragraphs:
        bilingual_doc.add_page_break()
        bilingual_doc.add_heading('Unmatched paragraphs', level=1)
        for paragraph in unmatched_paragraphs:
            bilingual_doc.add_paragraph(paragraph.text)

    # Save bilingual file
    bilingual_filename = filedialog.asksaveasfilename(title='Save bilingual file', filetypes=[('Word files', '*.docx')])
    if bilingual_filename:
        bilingual_doc.save(bilingual_filename)

    # Show message box if there were unmatched paragraphs
    if unmatched_paragraphs:
        num_unmatched = len(unmatched_paragraphs)
        messagebox.showinfo('Unmatched paragraphs', f'{num_unmatched} paragraphs in the original files were not matched in the bilingual file.')

# Create GUI
root = tk.Tk()
root.title('Bilingual File Creator')

button = tk.Button(root, text='Create Bilingual File', command=create_bilingual_file)
button.pack(padx=10, pady=10)

root.mainloop()

程序使用方法:

  1. 运行程序,会弹出一个窗口。
  2. 点击“Select English file”按钮,选择英文 Word 文件。
  3. 点击“Select Chinese file”按钮,选择对应的中文 Word 文件。
  4. 点击“Create Bilingual File”按钮,程序会自动生成一个新的双语 Word 文件。

功能特点:

  • 自动去除原文件中的空行。
  • 按段落匹配英文和中文内容。
  • 即使段落数不匹配,也能生成完整的双语对照文件。
  • 将不匹配的段落列在文件的末尾。
  • 弹出信息框,提示用户是否有段落不匹配的情况。

使用示例:

假设你有一个名为“english.docx”的英文 Word 文件和一个名为“chinese.docx”的中文 Word 文件,你可以使用本程序生成一个名为“bilingual.docx”的双语 Word 文件,其中包含英文和中文的段落对照内容。

注意:

  • 本程序需要安装 docxtkinter 库。
  • 如果你的英文和中文文件中的段落数不匹配,程序会将不匹配的段落列在文件的末尾。
  • 你可以根据自己的需要修改程序代码,例如修改标题、按钮文字、文件名等。

原文地址: https://www.cveoy.top/t/topic/nQQd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录