Как я могу проанализировать текстовый документ, отформатированный как тест, и составить список, не используя \ n для каждой строки и каждого вопроса - PullRequest
0 голосов
/ 24 октября 2018

У меня есть документ .txt с несколькими вопросами, отформатированными следующим образом: 1) первый вопрос:

а) ответ 1

б) ответ 2

в) ответ3

2) вопрос 2:

и т. Д. *

Как я могу преобразовать их в список, чтобы я мог превратить их в тест, не принимая их вручную, например так:

questions = ["1) вопрос первый: \ na) ответ 1 \ nb) ответ 2 \ nc) ответ 3 \ n \ n", "2) вопрос второй: \ na) ответ 1 \ nb) ответ2 \ nc) ответ 3 \ n \ n и т. Д.]

Спасибо!

У меня есть, вот что мне удалось до сих пор с викториной:

class Question:
    def __init__(self, prompt, answer):
        self.prompt = prompt
        self.answer = answer

question_prompts = ["What color are bananas?\n(a) red\n(b) black\n(c) yellow\n\n",]
answer_prompts = ['c','e','a','c']


questions = [
    Question(question_prompts[0],answer_prompts[0]),
    Question(question_prompts[1],answer_prompts[1]),
    Question(question_prompts[2],answer_prompts[2]),
    Question(question_prompts[3],answer_prompts[3])
    ]

def run_test(questions):
    score = 0
    for question in questions:
        answer = input(question.prompt)
        if answer == question.answer:
            score += 1
            print('Correct!')
        else:
            print('Wrong, the answer was ' + question.answer +'\n')

    print(" You got " + str(score) + "/" + str(len(questions)) + " correct")

run_test(questions)

я могу открыть файл, который я пробовал, чтобы отсортировать строку:

fileinput = open('pyFile.txt', 'r')
qList = []
for line in fileinput:
     if line.startswith(('2','3','4','5')): 
         qList.append(line)

1 Ответ

0 голосов
/ 24 октября 2018

Читайте построчно, затем:

import reprlib
def grep(pattern,lines,sep=")"):
    tmp_line=""
    for line in lines:

        try:
            pattern(line.split(sep)[0])
            yield tmp_line+"\n"
            tmp_line=""
        except:
            pass
        tmp_line+="\n"+line
    yield tmp_line

if __name__=="__main__":
    lines = ["1) question one:","a) answer 1","b) answer 2","c) answer 3","2) question 2:","a) Not an answer"]
    for x in grep(int,lines):
        if x is None or len(x) < 3:
            continue  ## first one will always be None
        print(repr(x)) ## one question with answers
        print("_______________") ## one question with answers

Будет напечатано:

'\ n1) первый вопрос: \ na) ответ 1 \ nb) ответ 2 \ nc) ответ 3 \ n '


' \ n2) вопрос 2: \ na) не ответ '


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...