Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何在一个txt文件中搜索一个特定的单词,并读取它所在的行和下面的行_Python - Fatal编程技术网

Python 我如何在一个txt文件中搜索一个特定的单词,并读取它所在的行和下面的行

Python 我如何在一个txt文件中搜索一个特定的单词,并读取它所在的行和下面的行,python,Python,所以我有一份充满琐碎问题的文件。这里有一个: Category: Definitions Question: A word like 'NASA' formed from the initials of other words is a(n) ······. Answer: acronym 大约有3000个问题,我想随机挑一个。我如何才能做到这一点并获得: A word like 'NASA' formed from the initials of other words is a(n) ··

所以我有一份充满琐碎问题的文件。这里有一个:

Category: Definitions
Question: A word like 'NASA' formed from the initials of other words is a(n) ······.
Answer: acronym
大约有3000个问题,我想随机挑一个。我如何才能做到这一点并获得:

A word like 'NASA' formed from the initials of other words is a(n) ······.
在一个叫做问题的变量中。 然后是另一个问题的答案。
希望这是有意义的。

如果我认为您的文件类似于以下内容:

Category: Category 1
Question: Question 1
Answer: Answer 1
Category: Category 2
Question: Question 2
Answer: Answer 2
Category: Category 3
Question: Question 3
Answer: Answer3
...
然后我们可以做如下的事情

如果将文件作为行列表读入:

with open("myfile.txt", "r") as f:
    list_of_lines = f.readlines()
从这里可以得到文档中所有行的列表。 然后,您可以通过索引访问这些问题和答案,因为下一个问题/答案etc的索引为+3

例如,对于上面的示例文件,我们可以打印问题-答案对:

for i in range(1, len(list_of_line)-2, 3):
     question = list_of_lines[i]
     answer = list_of_lines[i+1]
     print(question, answer)

希望您的文件看起来类似,或者您可以使用此处的想法应用于您的具体情况,如果我将您的文件视为类似于以下内容:

Category: Category 1
Question: Question 1
Answer: Answer 1
Category: Category 2
Question: Question 2
Answer: Answer 2
Category: Category 3
Question: Question 3
Answer: Answer3
...
然后我们可以做如下的事情

如果将文件作为行列表读入:

with open("myfile.txt", "r") as f:
    list_of_lines = f.readlines()
从这里可以得到文档中所有行的列表。 然后,您可以通过索引访问这些问题和答案,因为下一个问题/答案etc的索引为+3

例如,对于上面的示例文件,我们可以打印问题-答案对:

for i in range(1, len(list_of_line)-2, 3):
     question = list_of_lines[i]
     answer = list_of_lines[i+1]
     print(question, answer)

希望您的文件看起来类似,或者您可以将这里的想法应用到您的具体情况中

我认为一个好方法是使用正则表达式以及随机int,而不仅仅是
choice()

随机导入
进口稀土
all=open(filepath).readlines()
n=random.randint(0,len(all)-1)
不重新搜索时(“^Q:,全部[n%len(全部)]):
n+=1
n=n-len(全部)
问题=全部[n]
答案=全部[n+1]

只要所有的问题都以“问题:”,而没有其他行以“问题:”,这应该是可以找到的。我认为一个好方法是使用正则表达式,以及随机int,而不仅仅是
choice()

随机导入
进口稀土
all=open(filepath).readlines()
n=random.randint(0,len(all)-1)
不重新搜索时(“^Q:,全部[n%len(全部)]):
n+=1
n=n-len(全部)
问题=全部[n]
答案=全部[n+1]
只要所有的问题都以“问题:”开头,并且没有其他行以“问题:”开头,我想,

模块提供了访问文件中随机行的有效且简单的方法。假设您的文件结构为:

Category: Definitions
Question: 1
Answer: 1
Question: 2
Answer: 2
Question: 3
Answer: 3
下面是从文件中随机获取
问题
答案
的一个简单片段:

from linereader import getline
from random import randint

length = 7
filename = 'a.txt'

random_number = randint(2, length-2)
line_1 = getline(filename, random_number)

if line_1.startswith('Question:'):
    line_1 = line_1.strip('Question:')
    line_2 = getline(filename, random_number+1).strip('Answer:')
else:
    line_1 = getline(filename, random_number+1).strip('Question:')
    line_2 = getline(filename, random_number+2).strip('Answer:')

print(line_1)
print(line_2)
模块提供了访问文件中随机行的高效且简单的方法。假设您的文件结构为:

Category: Definitions
Question: 1
Answer: 1
Question: 2
Answer: 2
Question: 3
Answer: 3
下面是从文件中随机获取
问题
答案
的一个简单片段:

from linereader import getline
from random import randint

length = 7
filename = 'a.txt'

random_number = randint(2, length-2)
line_1 = getline(filename, random_number)

if line_1.startswith('Question:'):
    line_1 = line_1.strip('Question:')
    line_2 = getline(filename, random_number+1).strip('Answer:')
else:
    line_1 = getline(filename, random_number+1).strip('Question:')
    line_2 = getline(filename, random_number+2).strip('Answer:')

print(line_1)
print(line_2)

我将首先使用正则表达式将文本更改为JSON,然后加载JSON字符串以获得字典列表。从列表中选择一个长度范围内的随机数,并获得答案键

重新导入
导入json
随机输入
text=”“”
类别:A类
问题:问题A
答:答A:
类别:B类
问题:问题B
答复:答复B
类别:C类
问题:问题C
答复:答复C
类别:D类
问题:问题D
答复:答复D
"""
json_string=re.sub(r'(.*):\s(.*)\n(.*):\s(.*)\n(.*):\s(.*)\n,
r'{“\1”:“\2”、“\3”:“\4”、“\5”:“\6”}”,文本)
data=json.loads(“[”+json_string.strip().rstrip(“,”)+“]))
随机项=数据[random.randrange(len(data))]
问题=随机项['question']
答案=随机项['answer']
打印(问题、答案、sep=“\n”)
输出可能类似于:

问题C
答复C

并且在下一次运行时可能会打印不同的项目。

我会首先使用正则表达式将文本更改为JSON,然后加载JSON字符串以获得字典列表。从列表中选择一个长度范围内的随机数,并获得答案键

重新导入
导入json
随机输入
text=”“”
类别:A类
问题:问题A
答:答A:
类别:B类
问题:问题B
答复:答复B
类别:C类
问题:问题C
答复:答复C
类别:D类
问题:问题D
答复:答复D
"""
json_string=re.sub(r'(.*):\s(.*)\n(.*):\s(.*)\n(.*):\s(.*)\n,
r'{“\1”:“\2”、“\3”:“\4”、“\5”:“\6”}”,文本)
data=json.loads(“[”+json_string.strip().rstrip(“,”)+“]))
随机项=数据[random.randrange(len(data))]
问题=随机项['question']
答案=随机项['answer']
打印(问题、答案、sep=“\n”)
输出可能类似于:

问题C
答复C

下次运行时可能会打印不同的项目。

这是家庭作业问题吗?你采取了什么措施来解决这个问题?你在互联网上搜索到什么了吗?你有没有尝试过写代码?萨曼莎,我来跟你讲讲。现在很晚了,我的大脑不工作了。我曾考虑过使用我已经制作的单词搜索程序,但我真的不知道它会有什么帮助。我想过给问题编号并使用一个简单的randint,但那会花太长时间。我实在想不出还有什么事要做。您可以使用带有“\n”和“:”的拆分方法。如果我之前的问题被认为是粗鲁的,我很抱歉,@MarcoWyatt我只是想知道这个问题的背景,所以我提交的任何回复都与你熟悉/试图使用的内容相关,不会泄露家庭作业问题的答案。不是问题。这不是家庭作业。我要到明年才开始学习基础CS。我这样做是为了好玩。这是家庭作业问题吗?你采取了什么措施来解决这个问题?你在互联网上搜索到什么了吗?你有没有尝试过写代码?萨曼莎,我来跟你讲讲。现在很晚了,我的大脑不工作了。我想了一个好主意