python把Word题库转成Excle题库

这篇具有很好参考价值的文章主要介绍了python把Word题库转成Excle题库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

python把Word题库转成Excle题库,Python,前端,linux,javascriptpython把Word题库转成Excle题库,Python,前端,linux,javascriptpython把Word题库转成Excle题库,Python,前端,linux,javascript

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

# 导入所需库
import csv
import os
import re
 
from 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 为docx
    doc.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.paragraphs
    start_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,有问题可以咨询(不保证一定解决)文章来源地址https://www.toymoban.com/news/detail-744142.html

到了这里,关于python把Word题库转成Excle题库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python读取excle文件,插入到数据库

     一、需求背景         最近项目实践过程中遇到了一个问题:在使用Navicat将数据导入到PostgreSQL数据库时,发现时间格式的字段中的时间数值发生了变化,导致部分数据的时间不正确,故数据手动导入数据库报错。为了解决这个问题,决定编写Python代码来读取Excel文件,

    2024年02月16日
    浏览(29)
  • 【免费题库】华为OD机试 - Linux 发行版的数量(Java & JS & Python & C & C++)

    哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 Linux 操作系统有多个发行版,distrowatch.com 提供了各个发行版的资料。这些发行版互相 存在关联,例如 Ubuntu 基于 Debian 只开发而 Mint 又基于 Ubuntu 开发,那么我们认为 Mint 同 Debian 也

    2024年04月09日
    浏览(117)
  • python_web1(前端开发之HTML、CSS、Bootstap、Javascript、JQuery)

    知识总结: Python_web前端开发 python 安装Flask web框架 pip install flask 简介:templates用来返回html的页面,而非文本。 创建文件index.html 结构如下 index.xml内容如下: web1.py内容如下: 重新运行后: 固定格式:h/div/span/a/img/ul/li/table/input/form 通用的字符编码 meta charset=“UTF-8” div:一个

    2024年04月14日
    浏览(59)
  • python 把 易语言转成python

    Python作为一种高效的编程语言,已经越来越受到开发者的欢迎。易语言是一种极为流行的编程语言,也有非常多的用户。然而,由于易语言语法比较简单,对于一些高级编程需求可能无法满足,对于需要大规模运算的场景,易语言的性能也表现不佳。因此,许多开发者想将易

    2024年02月11日
    浏览(21)
  • 使用.NET 将PDF转成Word

    使用Solid Framework可以很方便的已编程方式将PDF转换成Word文件格式 首先准备一套Solid Framework 在Visual Studio中建立一个项目并引用SolidFramework.dll 添加命名空间 SolidFramework 前期准备, 设置路径个许可证 初始化SolidFrame Pdf Converter OCR识别引擎, 这里使用内置引擎 一切就绪开始转换

    2024年02月05日
    浏览(48)
  • C# 使用Microsoft.Office.Interop.Word 将WORD转成PDF

        /// summary     /// 测试文件     /// /summary     /// param name=\\\"input\\\"文件名/param     /// returns/returns     [ApiDescriptionSettings(Name = \\\"Getword\\\")]     [HttpGet]     public IActionResult getWord(string wordName)     {         string templatePath = \\\"D:\\\\Template\\\\wordTemplate.docx\\\";         string log = \\\"D:\\\\Templa

    2024年03月21日
    浏览(50)
  • 怎么把PDF转成Word?需要注意什么事项?

    PDF是一种常见的文档格式,但是与Word文档不同,PDF文件通常不能直接编辑。如果您想编辑PDF文件中的文本,或者想将PDF文件转换为Word文档,下面我们就来看一看把PDF转成Word有哪些方法和注意事项。   PDF转Word工具 有许多将PDF转换为Word的工具可供选择,比如PDF转换器工具。我

    2024年02月11日
    浏览(35)
  • 怎么用PDF派工具将Word转成PDF

    Word是我们最常用的一种格式文件,它易于编辑,但是安全性和稳定性较差,有时候我们发送给别人的Word文件,接收到打开内容已经乱码。遇到这种情况,我们可以优先将Word文件转换成稳定性好的PDF文件。那么如何进行文件格式转换呢? 推荐使用PDF派工具在线将word转成PDF,

    2024年02月13日
    浏览(46)
  • 如何将Word转成PDF?试一下这个转换方法

    Word转成PDF是现代办公中常见的需求,它可以确保文件的格式和内容在不同平台上保持一致,并且更加方便共享和打印。在这个数字化时代,我们经常需要将Word文档转换为PDF格式,无论是个人用户还是商务用户都会遇到这样的需求。那么如何将Word转成PDF?试一下这个转换方法,

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包