python使用import docx读取word内容有缺失

使用 import docx读取word的时,部分内容读不出来,括号中的月日就是没有的,就很莫名奇妙,有能解决这个问题的方法吗?data_2是我读取word的xml文件读出来的内容,但是比较麻烦

import docx
docx_path = r"word.docx"
docx_text = docx.Document(docx_path)
all_list1 = docx_text.paragraphs
all_list = [i.text for i in all_list1]
data = pd.DataFrame({'text':all_list})

img

该回答引用chatgpt:针对这种情况,可以使用正则表达式过滤掉空格和特殊字符,以保证读取的内容完整。例如,可以使用如下代码过滤空格和特殊字符:


import re
import docx

doc = docx.Document('/Users/changzhenwei/Desktop/111.docx')
text = '\n'.join([para.text for para in doc.paragraphs])
filtered_text = re.sub(r'\s+', '', text)
print(filtered_text)
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7777328
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python办公自动化之批量修改docx——以修改含有表格的word文件为例
  • 除此之外, 这篇博客: python-docx库读写word文档中的 三、写入word文档内容 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    利用python-docx库来写入数据到word文档,先创建文档,调用Document文档对象的方法实现写入,最后保存。

    • 添加标题add_heading()
    • 段落add_paragraph()
    • 文字块add_run()
    • 添加空白页add_page_break()
    • 添加表格add_table()
    • 添加图片add_picture()
    • 保存doc.save()
  • 以下回答来自chatgpt:

    我建议尝试使用 python-docx-template 模块来处理无法读取的部分内容。该模块可以读取 Word 文档的 xml 文件,并将其转换成一个可编辑的模板。步骤如下:

    1.安装 python-docx-template 模块

    可以使用 pip install python-docx-template 命令来安装该模块。

    2.读取 Word 文档的 xml 文件

    使用 docx.Document 方法读取 Word 文档时,会获取到该文档的 xml 文件。你可以通过以下代码来获取 xml 文件的内容:

    import zipfile
    from lxml import etree
    
    docx_path = "your_word_file.docx"
    docx = zipfile.ZipFile(docx_path)
    xml_content = docx.read("word/document.xml")
    tree = etree.fromstring(xml_content)
    

    3.使用 python-docx-template 模块创建可编辑的模板

    使用上一步获取到的 xml_content 创建一个新的 DocxTemplate 对象:

    from docxtpl import DocxTemplate
    
    tpl = DocxTemplate()
    tpl.xml = xml_content
    tpl.save("template.docx")
    

    这个 template.docx 就是一个可编辑的模板了。你可以通过打开这个文档并手动编辑其中的内容来修改模板。

    4.根据模板生成新的 Word 文档

    context = {'foo': 'bar'}  # 根据需要填写模板涉及到的参数
    tpl.render(context)
    tpl.save("generated.docx")
    

    可以将模板涉及到的参数放在 context 中,然后通过 render 方法渲染模板,最后 save 生成一个全新的 Word 文档。

    希望这些步骤能够帮助你解决无法读取部分内容的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^