python读取word详解【from docx import Document】

简介: python读取word详解【from docx import Document】

前言

       我们平时工作的时候会有很多的时候会遇到需要将word里面的有些杂乱的数据格式化到Excel中去,但是如果手动操作那真是【超级无语】,很崩溃,几百页的word让你慢慢复制粘贴,会死掉的。所以我们需要使用程序来完成,使用python先通过【docx】的包将word中的文字逐行读取出来,再根据行的数据格式进行数据清洗,清洗成对应的列表数据,批量写入Excel即可,这里我写入的是【CSV】文件,也可以通过Excel直接打开的。


环境

系统:win10


工具:PyCharm Community Edition 2021.3.1


解析目标类型:*.docx文件


输出目标类型:*.csv文件


需要用包:pip install docx


使用技巧:字符串处理


示例字符串

1、( A )不可存放于码头普通仓库内。


A、爆炸品          B、棉料              C、煤粉


2、( A )负责核发危险化学品及其包装物、容器生产企业的工业产品生产许可证,并依法对其产品质量实施监督,负责对进出口危险化学品及其包装实施检验。


A、质量监督检验检疫部门     B、安全生产监督局      C、公安部门


3、( A )告诉我们,构成管理系统的各要素是运动和发展的,它们相互联系又相互制约。在生产经营单位建立、健全安全生产责任制是对这一原则的应用。


A、动力相关性原则      B、动力原则        C、人本原理


4、( A )即根据演练工作需要,采取必要安全防护措施,确保参演、观摩等人员以及生产运行系统安全。


A、演练工作安全保障            B、安全防护措施         C、系统安全


5、( A )建立健全应急物资储备保障制度,完善重要应急物资的监管、生产、储备、调拨和紧急配送体系。


A、国家              B、社会               C、企业


下载环境

pip install docx


导入环境

from docx import Document

import csv

import uuid


import re


Document读取word

from docx import Document
import csv
import uuid
import re
file = Document("word.docx")
print(file)

输出对象查看是否读取成功,可以看到有对象的输出,代表读取成功。


image.png


使用【paragraphs】获取段落信息,可以看出输出的文字。

image.png



行拆分

拆分题目行与选择行

from docx import Document
import csv
import uuid
import re
file = Document("word.docx")
# 拆分依据
info = r"( A )|( B )|( C )|(  )"
# 输出样式
header_list2 = ["题型", "难度", "题目问题", "正确答案", "选项A", "选项B", "选项C"]
# 获取file的段落对象
for item in file.paragraphs:
    # 正则区分行
    te = re.search(info, item.text)
    print(te)

测试输出效果:


image.png


信息分析

正则判断根据答案进行判断的,如果这个行有就能输出,如果没有也就是选项那么就会输出【None】,所以我们判断一下是否等于【None】来区分题目行与选项行。


数据分组

from docx import Document
import csv
import uuid
import re
file = Document("word.docx")
# 拆分依据
info = r"( A )|( B )|( C )|(  )"
# 输出样式
header_list2 = ["题型", "难度", "题目问题", "正确答案", "选项A", "选项B", "选项C"]
# 用于最终存储
data_list = []
# 用于存储集合·前两项固定的可以直接写上·我们主要拆分后面5列
list_child = ["单选", "1", "", "", "", "", ""]
# 获取file的段落对象
for item in file.paragraphs:
    # 正则区分行
    te = re.search(info, item.text)
    if te != None:
        if list_child[2] != "":
            data_list.append(list_child)
        list_child = ["单选", "1", "", "", "", "", ""]
        list_child[2] = item.text.replace(item.text[te.span()[0]:te.span()[1]], "(   )")
        list_child[3] = item.text[te.span()[0]:te.span()[1]]
    else:
        item2Len = []
        for item2 in item.text.split(" "):
            if item2 != "":
                item2Len.append(item2)
        list_child[4] = item2Len[0]
        list_child[5] = item2Len[1]
        list_child[6] = item2Len[2]
print(data_list)


分组效果:


image.png


csv文件写入

直接创建一个新的文件写入即可。


from docx import Document
import csv
import uuid
import re
file = Document("word.docx")
# 拆分依据
info = r"( A )|( B )|( C )|(  )"
# 输出样式
header_list2 = ["题型", "难度", "题目问题", "正确答案", "选项A", "选项B", "选项C"]
# 用于最终存储
data_list = []
# 用于存储集合·前两项固定的可以直接写上·我们主要拆分后面5列
list_child = ["单选", "1", "", "", "", "", ""]
# 获取file的段落对象
for item in file.paragraphs:
    # 正则区分行
    te = re.search(info, item.text)
    if te != None:
        if list_child[2] != "":
            data_list.append(list_child)
        list_child = ["单选", "1", "", "", "", "", ""]
        list_child[2] = item.text.replace(item.text[te.span()[0]:te.span()[1]], "(   )")
        list_child[3] = item.text[te.span()[0]:te.span()[1]]
    else:
        item2Len = []
        for item2 in item.text.split(" "):
            if item2 != "":
                item2Len.append(item2)
        list_child[4] = item2Len[0]
        list_child[5] = item2Len[1]
        list_child[6] = item2Len[2]
fileName = "{0}.csv".format(uuid.uuid4())
with open(fileName, 'w', encoding="utf-8-sig", newline="") as csvFile:
    wr = csv.writer(csvFile)
    wr.writerow(header_list2)
    wr.writerows(data_list)

写入效果:



image.png

PyCharm打开效果:


image.png

Excel打开效果:

image.png


演示完毕,根据实际需求处理数据即可。

相关文章
|
7月前
|
XML 数据格式 Python
从手动编辑到代码生成:Python 助你高效创建 Word 文档
本文介绍如何用Python实现Word文档自动化生成,结合python-docx、openpyxl和matplotlib库,高效完成报告撰写、数据插入与图表生成,大幅提升办公效率,降低格式错误,实现数据驱动的文档管理。
1034 2
|
10月前
|
XML Linux 区块链
Python提取Word表格数据教程(含.doc/.docx)
本文介绍了使用LibreOffice和python-docx库处理DOC文档表格的方法。首先需安装LibreOffice进行DOC到DOCX的格式转换,然后通过python-docx读取和修改表格数据。文中提供了详细的代码示例,包括格式转换函数、表格读取函数以及修改保存功能。该方法适用于Windows和Linux系统,解决了老旧DOC格式文档的处理难题,为需要处理历史文档的用户提供了实用解决方案。
1219 1
|
10月前
|
Python
Python 办公实战:用 python-docx 自动生成 Word 文档
本文详解如何使用 python-docx 库实现 Word 文档自动化生成,涵盖环境搭建、文档创建、格式设置、表格与图片处理、模板填充、批量生成及性能优化等实战技巧,助你高效完成办公场景中的文档自动化任务。
2369 1
|
9月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
1964 0
|
缓存 JSON 数据处理
Python进阶:深入理解import机制与importlib的妙用
本文深入解析了Python的`import`机制及其背后的原理,涵盖基本用法、模块缓存、导入搜索路径和导入钩子等内容。通过理解这些机制,开发者可以优化模块加载速度并确保代码的一致性。文章还介绍了`importlib`的强大功能,如动态模块导入、实现插件系统及重新加载模块,展示了如何利用这些特性编写更加灵活和高效的代码。掌握这些知识有助于提升编程技能,充分利用Python的强大功能。
1109 4
|
人工智能 开发者 Python
python读取word文档 | AI应用开发
在RAG系统中,构建知识库时需读取多种外部文档,其中Word文档较为常见。本文介绍如何使用`python-docx`库读取Word文档(.docx格式)中的标题、段落、表格和图片等内容。首先通过`pip install python-docx`安装库,然后利用提供的接口提取所需信息。尽管该库功能强大,但在识别标题样式时需自定义逻辑,并且仅提供图片的URI而非直接加载。示例代码展示了读取文本、识别标题、读取表格及获取图片URI的方法。【10月更文挑战第2天】
1393 2
|
算法 TensorFlow 算法框架/工具
写Python时不用import,你会遭遇什么
写Python时不用import,你会遭遇什么
187 2
|
XML 存储 数据格式
使用Python的zipfile模块巧解Word批量生成问题
通过以上步骤,我们得到了填充了特定数据的 Word 文档。这个过程可以通过循环对多个数据集重复执行,从而实现批量生成多个 Word 文档的目标。
356 5
|
Python
Python——将PPT和Word转为PDF文件
Python——将PPT和Word转为PDF文件
465 1
|
IDE 开发工具 Python
Python自动化操作word--批量替换word文档中的文字
Python自动化操作word--批量替换word文档中的文字
1239 0

推荐镜像

更多