我有点困惑,希望你能帮上忙.
我的总体任务是确定.txt文件是否包含行'**** Optimisation achieved ****'。如果是这样的话,选择= 'Y‘。否则,除了关闭文件之外,不要做任何其他事情。
我看过this question,但在一些答案上遇到了一些麻烦:
我定义了函数test(),这样当调用它时,我将要搜索的短语和文件名传递给它。在test()中,我打开文件并对其中的行进行编号。
def test(phrase, filename):
with open(filename, 'r') as f:
for num, line in enumerate (f,1):正是在这一点上,我遇到了一些问题,有点困惑。以下是基于@ 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****。
由于第一个更接近我想要做的事情,任何正确方向的提示都会受到感激--尽管我要求耐心,因为我的编程非常基本。
发布于 2014-03-21 16:36:34
如果不需要行号,则不需要使用枚举()。
这个函数将把整个文件读取到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'这个函数逐行读取文件(在文件上迭代),如果在一行中找到phrase,则返回'Y‘。如果它到达文件的末尾,则返回'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'两种方法都能用。
https://stackoverflow.com/questions/22563882
复制相似问题