Python 像 Linux grep 一样搜索并打印出整行?

Python to search and print out the whole line just like Linux grep?

让我们以此为例。

>>> t = '''Line 1
... Line 2
... Line 3'''
>>> 

re.findall 只打印出类似于 Linux grep -o

的特定模式
>>> re.findall('2', t)
['2']
>>> 

Linux grep

wolf@linux:~$ echo 'Line 2' | grep 2
Line 2
wolf@linux:~$ 

Linux grep -o

wolf@linux:~$ echo 'Line 2' | grep 2 -o
2
wolf@linux:~$ 

我知道可以打印出整个输出,只是暂时想不出其中的逻辑。

Python

中的预期输出
Line 2

如果有更好的方法,请告诉我。

t = '''Line 1
Line 2
Line 3'''

for line in t.split('\n'):
    if(line.find("2")!=-1):
        print(line)

这应该适用于您的用例。 find() 用于检查字符串中是否存在模式

将 .* 放在您要查找的内容周围:

re.findall(r'.*2.*', t)  
print([l for l in t.splitlines() if "2" in l])

或者,如果您希望将其分开,如 grep

print('\n'.join([l for l in t.splitlines() if "2" in l]))