首页 文章

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

提问于
浏览
1

我正在使用python docx进行文件处理 . 使用较大的文件(50页)时,paragraph.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页)并通过仅更改paratext的索引来运行代码,则它可以正常工作 . 例如,我将3个相邻的段复制到一个新的doc并使用 print(paratext[2]) ,输出似乎在这里完美 . 我如何摆脱这种不一致,因为我必须使用更大的文档 .

1 回答

  • 0

    我希望这意味着缺少的文本是在一些其他XML元素中“封闭”的运行中,可能是字段或超链接 .

    特别发现正在发生的事情的最快方法可能是修改您的短脚本以暂时捕获段落XML .

    import docx
    document = Document(f)
    p_xml = [paragraph._element.xml for paragraph in document.paragraphs]
    print(p_xml[30])
    

    您在此时的选择可能是编辑Word文档以删除有问题的"enclosure"或使用 lxml 调用自己处理每个段落的XML .

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

相关问题