Python 双语对照文件生成器 - 完美匹配英文和中文段落
Python 双语对照文件生成器
本程序使用 Python 的 docx 库读取和写入 Word 文件,以及 tkinter 库创建图形用户界面,可以实现以下功能:
- 用户选择一个英文 Word 文件和一个对应的中文 Word 文件。
- 点击“生成”按钮,程序会自动生成一个新的 Word 文件,包含英文和中文的段落对照内容。
- 程序会自动去除原文件中的空行,并按段落匹配英文和中文内容。
- 即使英文和中文段落数不匹配,程序也能生成完整的双语对照文件,并将不匹配的段落列在文件的末尾。
- 程序会弹出一个信息框,提示用户是否有段落不匹配的情况。
以下是程序代码:
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()
程序使用方法:
- 运行程序,会弹出一个窗口。
- 点击“Select English file”按钮,选择英文 Word 文件。
- 点击“Select Chinese file”按钮,选择对应的中文 Word 文件。
- 点击“Create Bilingual File”按钮,程序会自动生成一个新的双语 Word 文件。
功能特点:
- 自动去除原文件中的空行。
- 按段落匹配英文和中文内容。
- 即使段落数不匹配,也能生成完整的双语对照文件。
- 将不匹配的段落列在文件的末尾。
- 弹出信息框,提示用户是否有段落不匹配的情况。
使用示例:
假设你有一个名为“english.docx”的英文 Word 文件和一个名为“chinese.docx”的中文 Word 文件,你可以使用本程序生成一个名为“bilingual.docx”的双语 Word 文件,其中包含英文和中文的段落对照内容。
注意:
- 本程序需要安装
docx和tkinter库。 - 如果你的英文和中文文件中的段落数不匹配,程序会将不匹配的段落列在文件的末尾。
- 你可以根据自己的需要修改程序代码,例如修改标题、按钮文字、文件名等。
原文地址: https://www.cveoy.top/t/topic/nQQd 著作权归作者所有。请勿转载和采集!