Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数仅返回1次迭代的值_Python_File_Function_Parsing - Fatal编程技术网

Python函数仅返回1次迭代的值

Python函数仅返回1次迭代的值,python,file,function,parsing,Python,File,Function,Parsing,我有下面的代码,我在做下面的事情 解析整个文件并检查每行中的模式。如果该模式存在,它应该将该模式返回到main函数并打印该值 问题:该函数仅返回第一个图案,不检查多行中的相同图案 代码: 如果文件有多行包含abc,它将只打印第一行并跳过其他行。我想打印所有包含abc的行 样本文件 sdfdsffdabcafsfse asasssadfsdadsadsaddsadadabc asfasfdsafdfabc 具有上述代码的输出: sdfdsffdabcafs

我有下面的代码,我在做下面的事情

  • 解析整个文件并检查每行中的模式。如果该模式存在,它应该将该模式返回到main函数并打印该值
  • 问题:该函数仅返回第一个图案,不检查多行中的相同图案

    代码:

    如果文件有多行包含abc,它将只打印第一行并跳过其他行。我想打印所有包含abc的行

    样本文件

         sdfdsffdabcafsfse
         asasssadfsdadsadsaddsadadabc
         asfasfdsafdfabc
    
    具有上述代码的输出:

         sdfdsffdabcafsfse
    

    您过早地从此行的函数返回:

    return line
    
    这意味着您退出函数,当找到第一个实例时,循环停止迭代

    请考虑以下情况,即捕获并返回所有匹配项:

    或者,您可以在一个简单的


    您难道不知道
    return
    可以终止函数体吗?虽然这是一个相对简单的问题,但它包含一个小的、自包含的示例,带有示例输入和输出。这是一个“好问题”,所以仅仅因为有人认为OP“太琐碎”就否决它是不公平的。
    return line
    
    def find_pattern(file):
        out = []
        with open(file) as fp:
          for line in fp:
              if "abc" in line:
                  out.append(line)
              else:
                   continue
        return out
    
    def find_pattern(file):
        with open(file) as fp:
            return [line for line in fp if "abc" in line]