Python3:在文件中查找短语(字符串)
我有点困惑,希望你能帮我 我的总体任务是确定.txt文件是否包含以下行:Python3:在文件中查找短语(字符串),python,python-3.x,Python,Python 3.x,我有点困惑,希望你能帮我 我的总体任务是确定.txt文件是否包含以下行:“****优化已实现****”。如果是,则使opt='Y'。否则,除了关闭文件外,不要执行任何操作 我已经看过了,但在一些答案上有点问题: 我定义函数test(),这样当调用它时,我会将要搜索的短语和文件名传递给它。在test()中,我打开文件并对其中的行进行编号 def test(phrase, filename): with open(filename, 'r') as f: for num,
“****优化已实现****”
。如果是,则使opt='Y'。否则,除了关闭文件外,不要执行任何操作
我已经看过了,但在一些答案上有点问题:我定义函数
test()
,这样当调用它时,我会将要搜索的短语和文件名传递给它。在test()
中,我打开文件并对其中的行进行编号
def test(phrase, filename):
with open(filename, 'r') as f:
for num, line in enumerate (f,1):
正是在这一点上,我有问题,有点困惑。以下内容基于@Dr jimbob给出的答案,在f:中使用if短语,并返回N
:
if phrase in f:
return 'Y'
else:
return 'N'
opt = test('****Optimisation achieved ****', file.txt)
print(opt)
[N.B.如果跳过文件行编号所在的行,也会发生同样的情况]
但是,如果我使用以下基于@suzanshakya给出的答案并在第行中使用if短语:
并返回Y
:
if phrase in line:
return 'Y'
else:
return 'N'
opt = test('****Optimisation achieved ****', file.txt)
print(opt)
我对这两个文件都使用了相同的.txt文件,它肯定包含一行****优化实现****
因为第一个与我想做的更为相似,所以任何正确方向的提示都会得到感激——尽管我要求耐心,因为我的编程非常基本如果您不需要行号,则不需要使用enumerate()
此函数将整个文件读入文本
,然后搜索文本
,查看其中是否有短语
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”。如果到达文件末尾,则返回“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'
两者都可以
- 第一种可能具有速度优势,因为它只访问文件一次,搜索短语在内存中完成
- 第二种方法的优点是保持内存占用空间小
确保您没有比较两个字符串,一个带尾随空格(\r\n
),另一个不带。第二种解决方案是最好的,但正如@IceArdor提到的,如果短语在line.strip()中,您应该确保执行,而不是.hmmm,我想如果短语
有尾随空格,它会失败,但是文本中的短语
或行中的短语
应该可以工作,只要短语
实际在行
或文本
中。编辑以解释短语中可能出现的空白。@wwii这是真的,我错了。我所做的大部分匹配都是if line.strip()==短语,因为我正在寻找精确的行。干得好!