我有点困惑,希望你能帮忙......
我的总体任务是确定.txt文件是否包含行'**** Optimisation achieved ****'
。如果是,请选择opt =' Y'。除非关闭文件,否则不要做任何其他事情。
我看过this question,但我对一些答案有点麻烦:
我定义了函数test()
,这样当它被调用时,我将要搜索的短语和文件名传递给它。在test()
内,我打开文件并在其中对行进行编号。
def test(phrase, filename):
with open(filename, 'r') as f:
for num, line in enumerate (f,1):
正是在这一点上,我遇到了问题并且有点困惑。以下内容基于@Dr jimbob给出的答案并使用if phrase in f:
,并返回N
:
if phrase in f:
return 'Y'
else:
return 'N'
opt = test('****Optimisation achieved ****', file.txt)
print(opt)
[N.B。如果我跳过文件行编号的行
,也会出现同样的情况但是,如果我使用以下基于@suzanshakya给出的答案并使用if phrase in line:
并返回Y
:
if phrase in line:
return 'Y'
else:
return 'N'
opt = test('****Optimisation achieved ****', file.txt)
print(opt)
我对两者使用了相同的.txt文件,它肯定包含行****Optimisation achieved****
。
由于第一个更类似于我想要做的事情,所以任何正确方向的刺激都会被感激地接受 - 尽管我会耐心等待,因为我的编程非常基础
答案 0 :(得分:2)
如果您不需要行号,则无需使用enumerate()。
此功能会将整个文件读入text
,然后搜索 text
以查看其中是否有phrase
。
def test(phrase, filename):
phrase = phrase.strip()
with open(filename, 'r') as f:
text = f.read()
if phrase in text:
return 'Y'
else:
return 'N'
此函数逐行读取文件(遍历文件)并返回' Y'如果它在一行中找到phrase
。如果它到达文件末尾,则返回N'
def test(phrase, filename):
phrase = phrase.strip()
with open(filename, 'r') as f:
for line in f:
if phrase in line:
return 'Y'
return 'N'
要么工作。