我如何浏览文本文件并提取我需要的不同元素? (Python3)

问题描述 投票:0回答:1

对于我的编程作业的一部分,我需要编写代码,将文本文件名作为命令行参数,从文本文件中读取特定格式的考试问题的详细信息,并识别它的不同功能。我需要它来执行此操作,以便程序可以继续允许用户参加考试并回答问题。

以下是文本文件中考试问题格式的示例:

Question - Multiple
Select all the animals that are mammals:
Possible Answers: 
A. whale
B. dog
C. fish
D. frog
Expected Answer: A, B
Marks: 2

我需要程序提取问题类型(即“多个”)、问题本身、所有可能的答案、预期答案以及正确回答所获得的分数。

文本文件中还包含多个问题,彼此之间用空行分隔。我不确定如何让程序将每个问题的细节彼此独立地分开。

我不允许使用以下任何关键字或内置函数: for、in (contains())、global、lambda、nonlocal、all()、any()、dir()、eval ()、枚举()、过滤器()、全局()、局部()、地图()

我确实想弄清楚这一点很长一段时间,但我似乎无法理解。这就是我目前所拥有的,尽管我知道这是非常错误的。然而,它可能会让我了解我可以使用哪些方法/功能,所以我想我会添加它。

import sys

filename = sys.argv[1]

fobj = open(filename, 'r')

read_lines = fobj.read()

print(read_lines)

while fobj != "":

    if "Question - " in read_lines:
        question_type = read_lines.split("Question - ")
    break

print(question_type)

这根本没有达到应有的效果。我主要是想看看我是否能够成功提取问题类型并将其分配给 Question_type 变量。然而,question_type 始终以列表 ['', 'Multiple '],我不知道如何解决它。

python python-3.x readline sys readlines
1个回答
0
投票

split(query)
方法通过在每次出现
query
时拆分字符串来创建列表。在查询“Question - ”处拆分字符串“Question - Multiple”确实会给出您所获得的字符串列表 - 第一个条目是空字符串
''
,第二个条目是字符串的其余部分
 'Multiple\n'
\n
是一个换行符,它可能位于您从文件中读入的每一行的末尾。您或多或少走在正确的道路上。

从这里开始,由于在“问题 - ”处拆分总是会给出一个与您所获得的列表相似的列表,因此您可以通过获取列表中的第二个条目来获取问题类型。然后,您可以使用

\n
删除多余的空白字符(包括换行符
.strip()
)。在你的代码中,这看起来像:

if "Question - " in read_lines:
    result = read_lines.split("Question - ")
    question_type_raw = result[1]
    question_type = question_type_raw.strip()
    break

print(question_type)

您可以在一行中提取问题类型 - 这留给读者作为练习。

© www.soinside.com 2019 - 2024. All rights reserved.