2016-12-15 90 views
0

伙计们我想通过使用子进程来检索进程的关联列表。使用Python Regex从字符串获取正确的输出

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这样的值。基本上我试图得到冒号后的内容:'。

在此先感谢。

+0

Python或bash正则表达式? – Inian

回答

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) 
+0

谢谢,那就是诀窍。 – mozcelikors

1

你可以做这样的事情print(str(inst).split(':')[1] ,它得到了inst的字符串表示形式,将它拆分成一个数组,其中包含delemiter“:”并且接受这个数组的第二个值(在你的例子中,它会是0-3

1

好,split()非常适合你的情况,但如果你想使用regex,你可以这样做:

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

但同样你并不真的需要regex完成这个任务。

相关问题