随机打乱word文档的题目 python

整体思路是

  • 设计一个寻找题目的函数
  • 先找到一个题目,在将这个题目随机插入到另一个题目之前

由于整体题目的格式还是比较单一的,所以该任务并不复杂。
涉及的知识点:insert(),re模块,正则匹配公式,docx模块

from docx import Document
import re
import random
def find(row,l):
    """

    :param row: 随机生成的
    :param l: 存储内容的数组
    :return: 挖出的题目数组
    """
    row_r = row

    question =[]
    if  l[row_r] == None:  # 避免随机到空行,由于题目格式固定,所以加1即可,其实while循环更稳妥
        row_r += 1
    while re.match(r'[1-9][0-9]?', l[row_r][0:2]) == None:
        row_r += 1
        if row_r == len(l) - 1:
            row_r -= 10
    question.append(l[row_r])
    del l[row_r]
    while re.match(r'[1-9][0-9]?', l[row_r][0:2]) == None:

        question.append(l[row_r])
        del l[row_r]
    return question

def Myinsert(question,l):
    row_i = random.randint(0, len(l))
    while re.match(r'[1-9][0-9]?', l[row_i][0:2]) == None:  # 找到一个题目的开始
        row_i += 1
        if row_i == len(l) - 1:
            row_i -= 10
    for i in range(len(question)):
        l.insert(row_i+i,question[i])

#打开文档
document = Document(u'知识竞赛题库.docx')
#读取每段资料
l = [ paragraph.text for paragraph in document.paragraphs]
print(len(l))
for i in range(200):
    row_r = random.randint(0, len(l))
    re1 = find(row_r,l)
    Myinsert(re1,l)
print(len(l))
document = Document()  # 打开一个文档
for i in range(len(l)):
    document.add_paragraph(l[i])
document.save(u'测试.docx')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值