月韹 2022-03-23 23:25 采纳率: 0%
浏览 854

docx文件如何转换成JSON文件

现有的word文件格式如下

img

我想转换成格式如下的JSON文件:

img

在网上找了相关的代码都无法实现,自己又不会更改代码,可以帮忙指点迷津改一下代码吗OVO

以下是网上找到的代码:

import docx
import re
import json
#打开docx文件
file = docx.Document("E:\Edge下载/1647846133302.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)

  • 写回答

1条回答 默认 最新

  • CSDN专家-HGJ 2022-03-24 10:28
    关注

    代码修改如下,供参考,其中主要是要将选项添加到一个列表即可:

    import docx
    import re
    import json
    #打开docx文件
    file = docx.Document("t0323.docx")
    list = []
    val = None
    #进行每段的操作
    
    for para in file.paragraphs:
        v = para.text.split()
        #每行进行操作
        s = []
        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['answer'] = key.group(0).lstrip()
                    val['title'] = re.sub('(?<=(\(|())\s*[A-D]*\s*', ' ', q)
                    list.append(val)
            if (re.match('[ABCD]', line)):
                if len(items) > 1:
                    s.append(''.join([str(x) for x in items[1:]]))
            val['option']=s
     
    with open('datat.json', 'w') as outfile:
        json.dump(list, outfile, ensure_ascii=False)
    
    
    

    word文档内容类似于:

    1.领班属于下列哪一类管理人员(A)
    A.基层管理人员 B.中层管理人员 C.高层管理人员 D.以上都不是
    2.沟通、了解、激励下属的管理技能是(C)
    A.技术技能 B.诊断技能 C.人际关系技能 D.分析技能
    

    运行结果:

    [{"no": "1", "answer": "A", "title": "领班属于下列哪一类管理人员( )", "option": ["基层管理人员", "中层管理人员", "高层管理人员", "以上都不是"]}, {"no": "2", "answer": "C", "title": "沟通、了解、激励下属的管理技能是( )", "option": ["技术技能", "诊断技能", "人际关系技能", "分析技能"]}]
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 3月23日
  • 创建了问题 3月23日