大家好,我是小小明,今天我要给大家分享的是两个word文档处理的案例,核心是读取excel的数据,按照指定的规则写入到word中。
之前们已经分享过一些pandas读写excel的例子,这次我们需要在此基础上还需读写word文档。
python-docx简介
利用python读写word文档的库是python-docx,安装:
pip install python-docx
python-docx 官方文档:https://python-docx.readthedocs.io/en/latest/
基本的对象关系:
![90614c357f040b3794781f538f11bdf4.png](https://img-blog.csdnimg.cn/img_convert/90614c357f040b3794781f538f11bdf4.png)
单字拆分处理
之前遇到一个需求:
![6e8ae501a830201150384abd4e00cc83.png](https://img-blog.csdnimg.cn/img_convert/6e8ae501a830201150384abd4e00cc83.png)
分析需求呢,会发现它要求在word文档中添加一行在excel对应的声韵调,若音1声超过1个字符还需将最后一个字符上标,音1韵不上标,音1调需整体上标。
为了解决这个问题,首先我们需要处理出我们需要的数据,每个单字对应的字音(音韵声)。
自然第一步是读取excel文件,最终产生以调查条目为键,声韵调作为值的字典,而音1声超过1个字符需将最后一个字符上标,所以音1声应该把不需上标和需要上标的分开存储,最终形成一个四元组。
看看代码吧:
01
数据读取
import pandas as pd
df = pd.read_excel("老男单字.xls", usecols=[0, 1, 3, 4, 5], dtype={
'编号': 'str'})
df.head()
编号 | 调查条目 | 音1声 | 音1韵 | 音1调 |
---|---|---|---|---|
0001 | 多 | t | o | 44 |
0002 | 拖 | th | o | 44 |
0003 | 大 | t | a | 13 |
0004 | 锣 | l | o | 21 |
0005 | 左 | ts | o | 35 |
单字对应的字音字典生成
symbols = {}
for row in df.values:
k = row[1]
a = row[2].strip()
if len(a) > 1:
v = (a[:-1], a[-1], row[3].strip(), str(row[4]))
else:
v = (a, "", row[3].strip(), str(row[4]))
symbols[k] = v
利用pandas查看生成结果:
pd.DataFrame.from_dict(symbols, 'index').head(10)
![137b295f379ac1e590df3cc59591e7ee.png](https://img-blog.csdnimg.cn/img_convert/137b295f379ac1e590df3cc59591e7ee.png)
02
测试数据匹配
好,接下来,我们尝试读取word文档的第一个表格,并匹配获取每个字音需要添加的音韵调: