gpt4 book ai didi

python - 如何匹配一个单词,在文件中一遍又一遍地打印该行和下一行

转载 作者:行者123 更新时间:2023-12-01 08:28:03 24 4
gpt4 key购买 nike

注册商希望解析包含许多学生数据的文本文件。

输入文件:多个学生数据的文本文件(每个学生文件的格式相同)

我已经成功地找到了一个“模式”并将其打印到文件中,这是我需要的 75%。有一种情况,我需要在找到匹配项并打印匹配行后打印下一行。这就是我迷路的地方。 [可迭代、迭代器、生成器……对我来说都是希腊语]

文本示例:

Student............: StudentA
Program............: BA Adol Biology Education (ED.ADOL.BIO.BA)

C) 3: Lab Science Course
Complete 1 Lab Science course
CHM-111 General Chemistry I *4..... FA2018 A 4

I) 4: Adolescent Biology Education Major
Credits: 24
GPA Achieved/Needed: 4.000 / 2.500
Complete all 3 subrequirements:
I) A: Educ Requirements
COMPLETE 2 GROUPS
Credits: 5
GPA Achieved/Needed: none / 3.000
I) Group 1
Student............: StudentB
Program............: BA Adol Eng Education (ED.ADOL.ENG.BA)

C) 3: Lab Science Course
Complete 1 Lab Science course;
CHM-111 General Chemistry I *4..... FA2018 A 4
I) 4: Adolescent English Education Major
Credits: 24
GPA Achieved/Needed: 4.000 / 2.500
Complete all 3 subrequirements:
I) A: Educ Requirements
COMPLETE 2 GROUPS
Credits: 5
GPA Achieved/Needed: none / 3.000
I) Group 1
Student............: StudentC
Program............: BA Adol Chemistry Education (ED.ADOL.CHM.BA)

C) 3: Lab Science Course
Complete 1 Lab Science course;
CHM-111 General Chemistry I *4..... FA2018 A 4
I) 4: Adolescent Chemistry Education Major
Credits: 24
GPA Achieved/Needed: 4.000 / 2.500
Complete all 3 subrequirements:
I) A: Educ Requirements
COMPLETE 2 GROUPS
Credits: 5

运行Python 3.7.1;尝试过使用 __next__() 但没有成功。根据我读到的 print() 将指针移动到下一行...所以我尝试这样做,但这不起作用。

outfile = open('result.txt', 'w')
with open('BEVL_EDU.txt','r') as inFile:
f = inFile.read().splitlines()
for line in f:
if 'Student...' in line:
outfile.write(line + '\n')
if '4:' in line:
outfile.write(line + '\n')
print(line) # --> this is where I tried to move the pointer to next line
outfile.write(line + '\n') # --> and then print the "next" line :-)
if 'GPA Achieved/Needed' in line:
outfile.write(line + '\n')

最佳答案

你应该首先做一些事情来让你的代码更符合Python语言。文件可以直接迭代。所以代替:

f = inFile.read().splitlines()

你应该只使用:

对于 inFile 中的行:

现在我们已经让代码直接在文件上运行,就像在 python 中一样,您只需调用 next(inFile) 即可获取文件中的下一行。这将使文件迭代器前进并返回值,并且不会破坏 for 循环。

关于python - 如何匹配一个单词,在文件中一遍又一遍地打印该行和下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54097644/

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