使用 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})
该回答引用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)
不知道你这个问题是否已经解决, 如果还没有解决的话:利用python-docx
库来写入数据到word文档,先创建文档,调用Document
文档对象的方法实现写入,最后保存。
add_heading()
add_paragraph()
add_run()
add_page_break()
add_table()
add_picture()
doc.save()
我建议尝试使用 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 文档。
希望这些步骤能够帮助你解决无法读取部分内容的问题。