如何将带有注释列表的 .txt 文件重新转换为 Word 文档?

如何将带有注释列表的 .txt 文件重新转换为 Word 文档?

不知何故,我保存的 Word 文档变成了 .txt 文件(即使我不小心将其保存为 .txt,难道不应该创建副本而不删除原始文件吗?),这意味着其所有跟踪的更改都消失了,并且所有注释都转换为文档末尾的列表。我怀疑我可以使用“比较文档”恢复跟踪,但有没有办法逆转此过程,使注释列表自动转换回注释,而不必手动重写每个注释?

答案1

如果错误地保存了 Word 文档,将其转换为末尾带有注释列表的文本文件,则可以使用软件包 python-docx 和 bayoo-docx 轻松恢复注释,这两个软件包允许使用 Python 以编程方式操作 .docx 文件。后一个软件包可能是操作注释所必需的。这不会恢复格式或丢失的更改,尽管如果有未修改的文档副本,可以使用 Word 的比较工具恢复后者。

以下简单程序可以完成恢复注释的任务。它需要两个文件:一个包含文档文本和末尾的注释列表的 .txt 文件(该文件应该是由于错误保存 Word 文档而生成的文件),以及一个仅包含文本而不包含注释的文件。此文件可以轻松手动(或通过编程)创建。有关代码工作原理的详细说明,请参阅代码注释。

# -*- coding: utf-8 -*- 

from docx import Document 
import re

#Open the text file with the comments at the end

a = [] 
with open("TEXT_DOCUMENT.txt") as f:
        for lines in f:
             if re.search("AUTHOR_INITIALS", lines):
                #Remove the initial comment marker, of the form [AUTHOR_INITIALS NUMBER]
                lines = re.sub(r'\[AUTHOR_INITIALS.+\]', '', lines) #Replace AUTHOR_INITIALS with the actual initials included in the file. 
                #Then add them to an array. 
                a.append(lines)

#Assuming that the author's name does not appear in the text itself, approximately the first half of occurrences of the author's name will be the locations of the comments, 
#not the comment text itself, so we exclude them. 

a = a[int(len(a)/2-2):]
    
                                                  

#Open a document consisting of the contents of the text file with the comments removed. This is easily done manually. 

document = Document("FILE_WITHOUT_COMMENTS.docx") 
i = 0 

for para in document.paragraphs:
    #Find the location of the comment markers in the body of the text, excluding any portion of the comment list that might accidentally have been included. 

    if "AUTHOR_INITIALS" in para.text and i<=len(a):
        
        #As before, strip the comment marker.
        new_para = re.sub(r'\[AUTHOR_INITIALS.+\]', '', para.text)
        para.text = new_para
        
        para.add_comment(str(a[i]), author = 'AUTHOR', initials = 'AUTHOR_INITIALS')
        
        i = i + 1
    
        
 
document.save("OUTPUT_FILE.docx)

该代码是为 Python 3.7 编写的,可与 Microsoft Word 版本 2107、python-docx 版本 0.2.17 和 re 版本 2.2.1 一起使用。

相关内容