zoukankan      html  css  js  c++  java
  • 使用Python转换word文档到JSON

    需求是有一堆这样的word文档,要转换成试题,供web界面使用。

    image.png

    #!/usr/bin/env python3
    import docx
    import re
    import json
    
    file = docx.Document("./2018《廉洁自律准则》知识竞赛试题及答案.docx")
    list = []
    val = None
    for para in file.paragraphs:
        v = para.text.split()
        for line in v:
            items = re.compile(".").split(line)
            if (re.match('d', line)):
                if len(items) > 1:
                    val = {'no': items[0]}
                    q = ''.join([str(x) for x in items[1:]])
                    key = re.search('(?<=((|())s*[A-D]*', q)
                    if key != None:
                        val['k'] = key.group(0).lstrip()
    
                    val['q'] = re.sub('(?<=((|())s*[A-D]*s*', ' ', q)
                    list.append(val)
            if (re.match('A', line)):
                if len(items) > 1:
                    val['a'] = ''.join([str(x) for x in items[1:]])
            if (re.match('B', line)):
                if len(items) > 1:
                    val['b'] = ''.join([str(x) for x in items[1:]])
            if (re.match('C', line)):
                if len(items) > 1:
                    val['c'] = ''.join([str(x) for x in items[1:]])
            if (re.match('D', line)):
                if len(items) > 1:
                    val['d'] = ''.join([str(x) for x in items[1:]])
    
    with open('data.json', 'w') as outfile:
        json.dump(list, outfile, ensure_ascii=False)
    

    转换过程并不完美,因为word文档并非标准,大约有90%左右的没有问题,还有部分是有问题的。

  • 相关阅读:
    6.html5分组元素
    STL基础--算法(修改数据的算法)
    STL基础--算法(不修改数据的算法)
    STL基础--仿函数(函数对象)
    STL基础--迭代器和算法
    STL基础--容器
    STL基础--基本介绍
    C++11--Tuple类<tuple>
    C++11--随机数引擎和随机数分布<random>
    C++11--时钟和计时器<chrono>
  • 原文地址:https://www.cnblogs.com/warrior/p/12775843.html
Copyright © 2011-2022 走看看