使用Python Regex从字符串中获取正确的输出

时间:2016-12-15 11:38:55

标签: python regex bash

伙计们我想要检索一个流程'使用子进程的亲缘关系列表。

try:
    pid = 1500
    x = subprocess.check_output(['taskset','-c','-p', str(pid)])
except Exception as inst:
    print inst

但是,这会产生以下输出:

pid 1500's correct affinity list: 0-3

如何直接将0-3值作为字符串获取?只能有整数或0-3之类的值。基本上我是想在冒号之后得到什么:'。'。

提前致谢。

3 个答案:

答案 0 :(得分:1)

只需在:上拆分输出,然后使用索引1获取0-3。之后,您可以随心所欲地做任何事情。像这样:

try:
    pid = 1500
    x = subprocess.check_output(['taskset','-c','-p', str(pid)])
    affinity_list = [affinity for affinity in x.split(':')[1].split('-')]
except Exception as inst:
    print inst

这将产生:

affinity_list = [0, 3]

如果您想将0-3解释为范围,可以执行以下操作:

affinity_list = range(affinity_list[0], affinity_list[-1] + 1)

答案 1 :(得分:1)

你可以做类似print(str(inst).split(':')[1]的东西,它获取inst的字符串表示,用删除器“:”将它分成一个数组,然后取这个数组的第二个值(在你的例子中,它会是0-3

答案 2 :(得分:1)

嗯,split()非常适合您的情况,但如果您想使用regex,您可以执行以下操作:

>>> import re
>>> x = "pid 1500's correct affinity list: 0-3"
>>> y = re.search(':.*$',x).group()[1:]
>>> y
' 0-3'

但是,你真的不需要regex来完成这项任务。