词转excl表格
同事在做一个批量性的工作,就是将词文档中的题目和选项,转移到xml文档中。
实例:
再网上有很多将各种文档转化的工具和例子,但是很少有将固定格式进行转化的。
因为在这之前也是不明所以,老大直接让写个脚本,本能的感觉这个脚本不是很好写,有危险。但是哪有害怕就不做的道理,不会也要干。
<强>首先确定好转化思路强>
1,查了很多资料,转excl的都是用的json文件转字典再转excl或者将字典,元组,列表转为json再转除外的归根结底就是将字典转除外的比较欣喜的是正好可以将题目当做键,选项和答案当做值。这样非常符合转换过程。
2,那么接下来的问题变成了如何将词文档内容转换为字典的形式。其实也一样很简单,接下来一点一点的分析就OK了。
<强>环境问题:强>
python3:在编写过程中,因为出现中文,会遇到编码问题,而python3又将编码优化的很好,所以选择python3。(如果你出现乱码,或编码不正确,请考虑编码转化对错问题)
操作系统:linux(深化版的)
<强>困难又简单的编写历程强>
1,将词文档转换为字典形式
(1)读取词文档内容,python中给出了模块,python-docx
下载模块:
sudo pip3安装python-docx
引用>我们需要用到的这个模块方法很简单,只需要读取和输出就可以了
<代码>进口多克斯 文件=docx.Document(“。/密码学竞赛习题。docx”) 代码>文档()用来打开一个文档
(2)循环输出文档内容,将内容添加到字典当中从词文档中我发现从第六行开始,没六行为一个题目加上答案,所以我想出先将每个题目循环输出出来,然后在将每个题目的内容循环加入的字典当中。又因为每个键对用多个值,所以,我将选项创建一个列表。
<代码>={} 文件=docx.Document(“。/密码学竞赛习题。docx”) l的范围(61): b=[] idx, para列举(file.paragraphs [6 * l: 6 + 6 * l]): 如果idx==0: 关键=para.text elif idx==1: v1=para.text b.append (v1) elif idx==2: v2=para.text b.append (v2) elif idx==3: v3=para.text b.append (v3) elif idx==4: v4=para.text b.append (v4) elif idx==5: v5=para.text b.append (v5) a.update({关键:b}) 代码>enumerate()函数用于将一个可遍历的数据对象(如列表,元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在为循环当中。(百度得到,说白了就是给每行起个行号)
2,将字典转化为excl文件
(1)首先创建excl文件
python也给出了处理表格的模块xlwt,可以直接去下载sudo pip3安装xlwt
引用>=xlwt
创建一个表格<代码>的书。工作簿()#创建excl文件 表=book.add_sheet (sheet1) #创建一个表 title=['题目”、“',' B ', ' C ', ' D ', '答案”】#每一列标题 上校的范围(len(标题)):#将标题逐个添加到表格当中 sheet.write(0,坳、标题(col)) 行=1 #设置行号代码>(2)正儿八经转excl
一切准备就绪,接下来就是将字典中的内容逐个加入到创建的excl中就好
为k<代码>: data=https://www.yisu.com/zixun/a [k] data.insert (0 k)第号一列加入序号 指数的范围(len(数据)):#依次写入每一行 sheet.write(行、索引数据(指标)) 行+=1 book.save (TimuTest.xls) #保存excl的文件名代码>3,执行命令得到想要的excl表格
python3 docxToexcl.py 引用>
4,整个脚本代码
<代码> # !/usr/bin/python3 utf - 8编码: 进口多克斯 进口再保险 进口json 进口xlwt 一个={} 文件=docx.Document(“。/密码学竞赛习题。docx”) l的范围(61): b=[] idx, para列举(file.paragraphs [6 * l: 6 + 6 * l]): 如果idx==0: 关键=para.text elif idx==1: v1=para.text b.append (v1) elif idx==2: v2=para.text b.append (v2) elif idx==3: v3=para.text b.append (v3) elif idx==4: v4=para.text b.append (v4) elif idx==5: v5=para.text b.append (v5) a.update({关键:b}) 书=xlwt.Workbook () 表=book.add_sheet (“sheet1”) title=['题目”、“',' B ', ' C ', ' D ', '答案”) 上校的范围(len(标题)): sheet.write(0,坳、标题(col)) 行=1 k:中 data=https://www.yisu.com/zixun/a [k] data.insert (0 k) 指数的范围(len(数据)): sheet.write(行、索引数据(指标)) 行+=1 book.save (test.xls)字文档(选择题)转换为excl表格