Python re.findall 期望的字符串
Python re.findall expected string
我想用 re.findall
在我的字符串中搜索一个词。代码如下:
def check_status():
p1 = subprocess.run(["screen", "-ls"], shell=False)
p2 = re.findall("myscreen", p1)
print(p2)
来自 p1
的 return 看起来像这样:
There are screens on:
2420454.myscreen (12/25/2021 01:15:17 PM) (Detached)
6066.bot (12/14/2021 07:11:52 PM) (Detached)
如果我执行此函数,我会收到以下错误消息:
File "/usr/lib/python3.10/re.py", line 240, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or bytes-like object
我已经搜索过这个问题,但一无所获。
我正在使用 Python 3.10
subprocess.run
returns 一个 CompletedProcess
对象。您要将 capture_output=True
和 text=True
添加到关键字参数,并将正则表达式应用于其 stdout
成员:
p2 = re.findall('myprocess', p1.stdout)
..当然,您不需要正则表达式来查找静态字符串:
p2 = 'myprocess' in p1.stdout
如果您想提取屏幕 ID,可以循环 stdout.splitlines()
并从匹配行中提取第一个标记。
p2 = []
for line in p1.stdout.splitlines():
if 'myprocess' in line:
p2.append(line.split('.')[0]
我想用 re.findall
在我的字符串中搜索一个词。代码如下:
def check_status():
p1 = subprocess.run(["screen", "-ls"], shell=False)
p2 = re.findall("myscreen", p1)
print(p2)
来自 p1
的 return 看起来像这样:
There are screens on:
2420454.myscreen (12/25/2021 01:15:17 PM) (Detached)
6066.bot (12/14/2021 07:11:52 PM) (Detached)
如果我执行此函数,我会收到以下错误消息:
File "/usr/lib/python3.10/re.py", line 240, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or bytes-like object
我已经搜索过这个问题,但一无所获。
我正在使用 Python 3.10
subprocess.run
returns 一个 CompletedProcess
对象。您要将 capture_output=True
和 text=True
添加到关键字参数,并将正则表达式应用于其 stdout
成员:
p2 = re.findall('myprocess', p1.stdout)
..当然,您不需要正则表达式来查找静态字符串:
p2 = 'myprocess' in p1.stdout
如果您想提取屏幕 ID,可以循环 stdout.splitlines()
并从匹配行中提取第一个标记。
p2 = []
for line in p1.stdout.splitlines():
if 'myprocess' in line:
p2.append(line.split('.')[0]