gpt4 book ai didi

python - 以所需格式转换 MCQ - python

转载 作者:行者123 更新时间:2023-11-28 18:28:26 26 4
gpt4 key购买 nike

我正在尝试转换如下所示的 MCQ:

Which will legally declare, construct, and initialize an array?
A. int [] myList = {"1", "2", "3"};
B. int [] myList = (5, 8, 2);
C. int myList [] [] = {4,9,7,0};
D. int myList [] = {4, 3, 7};
ANSWER: D

转换成所需的格式如下:

Which will legally declare, construct, and initialize an array?
int [] myList = {"1", "2", "3"};
int [] myList = (5, 8, 2);
int myList [] [] = {4,9,7,0};
*int myList [] = {4, 3, 7};

我尝试的逻辑如下:

1. Open the text file and trying to fetch the line number of "ANSWER: D"
2. Open the file again and go to that line number
3. write a for loop which will iterate max 5 times till it find the match
"D." is found.
4.Once the match is found replace it with '*'

下面是我试过的代码:

import re

ans = []
line_no = []

class Options:
def __init__(self, ans1, num1):
self.a = ans1
self.n = num1
#print(self.a, self.n)


pattern = 'ANSWER: [A-Z]' # to fetch the answer of each question
r = re.compile(pattern)

pattern1 = '[A-F]\.\s'
re1 = re.compile(pattern1)



with open (r"C:\Users\dhvani\Desktop\test.txt", "r") as f:
for num, line in enumerate(f, 1):
d = r.findall(line)
if(d):
l = d[0].split(":")
m = l[1].split(" ")
m = m[1] + "."
ans.append(m)
line_no.append(num)

x = Options(ans, line_no)
print(x.a, x.n)



with open (r"C:\Users\dhvani\Desktop\test.txt", "r") as f:
for i, j in enumerate(ans):
j1 = j[0]
z = f.readlines()[j1 - 1]
print(z)
for n in range(j1 - 1, j1 - 7, -1):
value = f.readline()
value1 = re1.findall(value)

if value1:
if value1 == i:
value.sub('[A-F]\.\s', '*', value)
break;

我能够获取“ANSWER: D”的行号并存储“D”。及其在两个不同列表中的相应行号。

那么后面的步骤都不成功。

任何帮助将不胜感激。我是 Python 新手。

最佳答案

您可以使用以下代码:从文件读取,进行必要的修改并将它们写入新的文本文件。

import re

with open("your_filename_here", "r") as fp:
string = fp.read()
f1 = open(r"your_filename_here", "w")

rx = re.compile(r'''
(?!^[A-E]\.)
(?P<question>.+[\n\r])
(?P<choices>[\s\S]+?)
^ANSWER:\ (?P<answer>[A-E])
''', re.MULTILINE | re.VERBOSE)

rq = re.compile(r'^[A-E]\.\ (?P<choice>.+)')

for match in rx.finditer(string):

def repl(line, answer):
if line.startswith(answer):
line = rq.sub(r"*\1", line)
else:
line = rq.sub(r"\1", line)
return line

lines = [repl(line, match.group('answer'))
for line in match.group('choices').split("\n")
if line]

block = match.group('question') + "\n".join(lines)
#print(block)
f1.write(block + "\n\n")

这会将您的积木分成问题、选择和答案部分,然后进行分析。参见 a demo on ideone.com .

关于python - 以所需格式转换 MCQ - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39423212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com