python把Word题库转成Excle题库

2023-11-05 09:20
文章标签 python 题库 转成 word excle

本文主要是介绍python把Word题库转成Excle题库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

又到了一年一度的背题时刻,但是收到的题库是Word版的,页数特别多

话不多说,上代码,有图有真相,代码里面备注的很详细

# 导入所需库
import csv
import os
import refrom docx import Document
from win32com import client as wc# 打开word文档def doc_to_docx(doc_file):full_path = os.path.abspath(doc_file)  # 绝对路径,便于分离文件位置、名和后缀word = wc.Dispatch("Word.Application")doc = word.Documents.Open(full_path)doc.SaveAs(os.path.splitext(full_path)[0] + '.docx', 12)  # 保存只改后缀 12 为docxdoc.Close()word.Quit()return os.path.splitext(full_path)[0] + '.docx'def save_to_csv(doc_name, date):  # date为list [[1],[2],[3]...]name = os.path.abspath(doc_name)# os.path.splitext(name)[0]out = open(f'{os.path.splitext(name)[0]}.csv', 'a', encoding='utf-8', newline='')csv_write = csv.writer(out, dialect='excel')for row in date:csv_write.writerow(row)out.close()print(f'文件{os.path.splitext(name)[0]}.csv生成完毕!请查看')if __name__ == '__main__':"""为防止格式错乱,请先在源文件里执行将^l替换为^p操作默认每个题目开头序号都是数字,如果不是,需要修改question_start_num对应的re代码"""file_name = input("请输入word文件名(带后缀):")  # "2.doc"TG_style = '一二三四五六七八九、'  # 大题干类型(最后一位为符号)choose_split = "、"  # 选项分割符号A、 A.if file_name.endswith('.doc'):  # 加快处理速度:.docx比doc处理速度快,所以如果不是x结尾的转成x的file_name = doc_to_docx(file_name)document = Document(file_name)# 获取所有段落all_paragraphs = document.paragraphsstart_num = 0  # 主干序号下角序号TX = ''  # 题型All_content = []  # 存储所有题内容tem = []  # 临时存储每个题类型、题干、选项、答案for paragraph in all_paragraphs:# 打印每一个段落的文字# print([paragraph.text])tittle_split = '、'question_start_num = re.compile(f'^\d')  # 识别题干头是否是数字p = re.compile(f'^{TG_style[start_num] + TG_style[-1]}')  # 匹配开头字符,筛选出大标号,区分题目类型tittle_ret = question_start_num.search(paragraph.text)  # 识别题干头ret = p.search(paragraph.text)  # 识别题型if ret:TX = paragraph.text.replace((TG_style[start_num] + TG_style[-1]), '', 1)start_num += 1# tittle_num = 1# print(TG)All_content.append(tem)tem = []All_content.append([paragraph.text])  # 读完题型,说明进入了题目内容else:if tittle_ret:  # 是否是题干All_content.append(tem)  # 如果是题干,证明上一题遍历完毕,进行缓存tem = [TX]  # 保存题型在第一位# print(f"{TG}{paragraph.text}")# tittle_num += 1  # 遇到题号不连续时继续处if All_content:  # 不是题干,缓存写了,说明在读取选项'''此处为了区分一行有多个选项的情况,逐个读取出来'''chooses = re.split(f"[A-Za-z]{choose_split}", paragraph.text)for choose in chooses:if choose.replace(' ', ''):  # 替换掉选项中空格进行过滤#print(choose)tem.append(choose)save_to_csv(file_name, All_content)

题库已打包,有环境的直接RUN,有问题可以咨询(不保证一定解决)

这篇关于python把Word题库转成Excle题库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348868

相关文章

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使