Python小技巧:提取docx文件中表格

'''
使用的包:python-docx
安装方式:conda install -c conda-forge python-docx
帮助文档:https://python-docx.readthedocs.io/en/latest/index.html#
'''
import docx 
# import os
from docx import Document

# 1、路径出现的问题特别多,可以参考下方的程序检验路径
# 2、文件名称好像不能是中文
doc_file = '/Users/matthewfan/Documents/123.docx'
document = Document(doc_file)

tables = document.tables # 获取文档中的所有表格
table = tables[0] # 提取文档中的第一个表格,测试文档中仅有一个表格

lo = {} # 存储每一行去重后的数据
for row in range(0, len(table.rows)):
    row_list = []
    for col in range(0,len(table.row_cells(row))):  # 提取row行的全部列数据
        row_list.append(table.cell(row,col).text.replace('\n','').replace(' ', '')) # 去除字符串中的特殊字符,并添加到临时列表中
    lo[row] = (sorted(set(row_list), key = row_list.index)) # 在不变顺序的前提下,去除List中的重复项
    
    # 打印出每行的数据观察相关格式特征
    print(row, ":len(", len(lo[row]),'):',lo[row])

输出结果:

(1)可以通过数据的长度进行类型名与内容的区分

(2)可以通过配置文件进行类型的归类,提高docx文件变化而引起的开发量(暂不提供处理代码)

0 :len( 7 ): ['姓名', '***', '性别', '男', '出生日期(岁)', '1978.11(41岁)', '']
1 :len( 6 ): ['民族', '汉族', '籍贯', '天津', '出生地', '']
2 :len( 7 ): ['入党时间', '2000.06', '工作时间', '1990.07', '健康状况', '良好', '']
3 :len( 4 ): ['职称', '高级工程师', '熟悉专业有何专长', '']
4 :len( 5 ): ['学历学位', '全日制教育', '大学学士', '毕业院校及专业', '重庆大学电力系统及其自动化']
5 :len( 4 ): ['学历学位', '在职教育', '', '毕业院校及专业']
6 :len( 2 ): ['现任职务', '西太平洋机甲公司***部副主任']
7 :len( 3 ): ['工作及学习简历', '1986.09-1990.07', '重庆大学电力系统及其自动化专业学习,获得大学学历,工学学']
8 :len( 3 ): ['工作及学习简历', '', '士学位']
9 :len( 3 ): ['工作及学习简历', '1990.07-1997.06', '西太平洋机甲公司*********技术员']
10 :len( 3 ): ['工作及学习简历', '1997.06-2001.07', '西太平洋机甲公司*********班班长']
11 :len( 3 ): ['工作及学习简历', '2001.07-2002.07', '西太平洋机甲公司*********副主任']
12 :len( 3 ): ['工作及学习简历', '2002.07-2005.04', '西太平洋机甲公司***']
13 :len( 3 ): ['工作及学习简历', '2005.04-2009.02', '西太平洋机甲公司***']
14 :len( 3 ): ['工作及学习简历', '2009.02-2012.02', '西太平洋机甲公司***部***处长']
15 :len( 3 ): ['工作及学习简历', '2012.02-2013.05', '西太平洋机甲公司***部***处长']
16 :len( 3 ): ['工作及学习简历', '2013.05-2016.08', '西太平洋机甲公司*********处处长']
17 :len( 3 ): ['工作及学习简历', '2016.08-2019.05', '西太平洋机甲公司*********处处长']
18 :len( 3 ): ['工作及学习简历', '2019.05-', '西太平洋机甲公司***部副主任']
19 :len( 2 ): ['工作及学习简历', '']
20 :len( 2 ): ['工作及学习简历', '']
21 :len( 2 ): ['工作及学习简历', '']
22 :len( 2 ): ['工作及学习简历', '']
23 :len( 2 ): ['工作及学习简历', '']
24 :len( 2 ): ['工作及学习简历', '']
25 :len( 2 ): ['工作及学习简历', '']
26 :len( 2 ): ['工作及学习简历', '']
27 :len( 2 ): ['工作及学习简历', '']
28 :len( 2 ): ['工作及学习简历', '']
29 :len( 2 ): ['工作及学习简历', '']
30 :len( 2 ): ['工作及学习简历', '']
31 :len( 2 ): ['工作及学习简历', '']
32 :len( 2 ): ['工作及学习简历', '']
33 :len( 6 ): ['家庭主要成员及重要社会关系', '称谓', '姓名', '年龄', '政治面貌', '工作单位及职务']
34 :len( 6 ): ['家庭主要成员及重要社会关系', '妻子', '***', '49', '群众', '西太平洋机甲公司***']
35 :len( 6 ): ['家庭主要成员及重要社会关系', '女儿', '***', '25', '群众', '无业']
36 :len( 6 ): ['家庭主要成员及重要社会关系', '父亲', '***', '75', '群众', '银河系联席会***']
37 :len( 6 ): ['家庭主要成员及重要社会关系', '母亲', '***', '75', '群众', '火星联邦议会***']
38 :len( 2 ): ['家庭主要成员及重要社会关系', '']
39 :len( 2 ): ['家庭主要成员及重要社会关系', '']

样例word文件格式:

这个错误是由于无法连接到本地主机的10248端口导致的。这个端口通常是kubelet进程监听的端口,用于健康检查。出现这个错误可能是由于kubelet进程没有正确启动或者配置错误导致的。 解决这个问题的方法是检查kubelet进程的状态和配置。你可以按照以下步骤进行操作: 1. 检查kubelet进程是否正在运行。你可以使用以下命令检查kubelet进程的状态: ```shell systemctl status kubelet ``` 如果kubelet进程没有运行,你可以使用以下命令启动它: ```shell systemctl start kubelet ``` 2. 检查kubelet的配置文件。你可以使用以下命令查看kubelet的配置文件路径: ```shell kubelet --kubeconfig /etc/kubernetes/kubelet.conf --config /var/lib/kubelet/config.yaml --bootstrap-kubeconfig /etc/kubernetes/bootstrap-kubelet.conf config view ``` 确保配置文件中的端口号和地址正确,并且与你的环境相匹配。 3. 检查网络连接。你可以使用以下命令检查是否可以连接到localhost的10248端口: ```shell curl -sSL http://localhost:10248/healthz ``` 如果无法连接,请确保端口没有被防火墙或其他网络配置阻止。 4. 检查docker的配置。有时候,kubelet进程依赖于docker进程。你可以按照以下步骤检查docker的配置: - 创建/etc/docker目录: ```shell sudo mkdir /etc/docker ``` - 编辑/etc/docker/daemon.json文件,并添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://tdhp06eh.mirror.aliyuncs.com"] } ``` - 重启docker进程: ```shell systemctl restart docker ``` 请注意,以上步骤是一种常见的解决方法,但具体解决方法可能因环境而异。如果以上步骤无法解决问题,请提供更多的错误信息和环境配置,以便我们能够更好地帮助你。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会唱歌的老樊

老少爷们,来个赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值