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]))
让我们以此为例。
>>> 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]))