Python 3.x Python docx段落方法给出了异常输出

Python 3.x Python docx段落方法给出了异常输出,python-3.x,ms-word,python-docx,python-textprocessing,Python 3.x,Ms Word,Python Docx,Python Textprocessing,我正在使用PythonDocx进行word文件处理。使用较大的文件(50多页)时,paragration.text方法返回的字符串与我的文件不一致 import docx document=Document(f) paratext=[] paragraphs=document.paragraphs for paragraph in paragraphs: text=paragraph.text paratext.append(text) print(paratext[30])

我正在使用PythonDocx进行word文件处理。使用较大的文件(50多页)时,paragration.text方法返回的字符串与我的文件不一致

import docx
document=Document(f)
paratext=[]
paragraphs=document.paragraphs
for paragraph in paragraphs:
    text=paragraph.text
    paratext.append(text)
print(paratext[30])

理想情况下,这应该打印第30段。但输出似乎失真(开始几个字符丢失,打印输出开始从中间的实际段落的某些情况下)。但是,如果我在一个新的ms word文档(仅1页)中复制相邻的几个段落,并通过更改副文本的索引来运行代码,则效果很好。例如,我将3个相邻的段落复制到一个新的文档中,并使用
打印(paratext[2])
,这里的输出似乎非常完美。我如何消除这种不一致性,因为我必须处理较大的文档

我认为这意味着缺少的文本是在运行中的,这些运行被“封闭”在其他一些XML元素中,比如字段或超链接

具体发现发生了什么的最快方法可能是修改短脚本以临时捕获段落XML

import docx
document = Document(f)
p_xml = [paragraph._element.xml for paragraph in document.paragraphs]
print(p_xml[30])
此时,您的选择可能是编辑Word文档以删除有问题的“附件”,或者自己使用
lxml
调用来处理每个段落的XML


如果使用
段落上的
.xpath()
方法,听起来可能更容易。在任何情况下,这都是一个单独的问题,在这个问题中,您将显示使用上述方法找到的XML。

我认为这意味着缺少的文本是在“包含”在其他XML元素(例如字段或超链接)中的运行中

具体发现发生了什么的最快方法可能是修改短脚本以临时捕获段落XML

import docx
document = Document(f)
p_xml = [paragraph._element.xml for paragraph in document.paragraphs]
print(p_xml[30])
此时,您的选择可能是编辑Word文档以删除有问题的“附件”,或者自己使用
lxml
调用来处理每个段落的XML

如果使用
段落上的
.xpath()
方法,听起来可能更容易。在任何情况下,这都是一个单独的问题,您可以在其中显示使用上述方法找到的XML