首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3:在文件中查找短语(字符串)

Python3:在文件中查找短语(字符串)
EN

Stack Overflow用户
提问于 2014-03-21 16:12:47
回答 1查看 180关注 0票数 0

我有点困惑,希望你能帮上忙.

我的总体任务是确定.txt文件是否包含行'**** Optimisation achieved ****'。如果是这样的话,选择= 'Y‘。否则,除了关闭文件之外,不要做任何其他事情。

我看过this question,但在一些答案上遇到了一些麻烦:

我定义了函数test(),这样当调用它时,我将要搜索的短语和文件名传递给它。在test()中,我打开文件并对其中的行进行编号。

代码语言:javascript
复制
def test(phrase, filename):
    with open(filename, 'r') as f:
         for num, line in enumerate (f,1):

正是在这一点上,我遇到了一些问题,有点困惑。以下是基于@ jimbob博士给出的答案,使用if phrase in f:,并返回N

代码语言:javascript
复制
            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的以下内容

代码语言:javascript
复制
            if phrase in line:
                return 'Y'
            else:
                return 'N'

opt = test('****Optimisation achieved ****', file.txt)
print(opt)

对于这两种情况,我都使用了相同的.txt文件,其中肯定包含行****Optimisation achieved****

由于第一个更接近我想要做的事情,任何正确方向的提示都会受到感激--尽管我要求耐心,因为我的编程非常基本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 16:36:34

如果不需要行号,则不需要使用枚举()。

这个函数将把整个文件读取到text中,然后通过text搜索以查看phrase是否在其中。

代码语言:javascript
复制
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‘。

代码语言:javascript
复制
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'

两种方法都能用。

  • 第一种方法可能具有速度优势,因为它只访问文件一次,并在内存中搜索短语。
  • 第二种方法具有保持内存占用小的优点。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22563882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档