如何使用Regex在Python中解析此字符串

时间:2017-07-11 23:29:03

标签: python regex

我正在尝试解析此字符串,以便在Python中获取总活动,空闲和关闭节点的总节点数:259(活动:226空闲:33向下:0)。我正在使用空格,但它不是最有效的方式,提取字符串信息的正则表达式将是什么样的

1 个答案:

答案 0 :(得分:0)

简单解决方案

您只能将数字提取到一个列表中,如果它们总是按顺序排列,并且每个字符串(和整数)的数字不会更多或更少:

>>> import re
>>> s = 'Total Nodes: 259 (Active: 226 Idle: 33 Down: 0)'
    'Total Nodes: 259 (Active: 226 Idle: 33 Down: 0)'
>>> y = re.findall('(\d+)', s)
    ['259', '226', '33', '0']

强大的解决方案

以下是我们如何将其变成一个词典。这是在Python 3中

>>> import re
>>> s = 'Total Nodes: 259 (Active: 226 Idle: 33 Down: 0)'
    'Total Nodes: 259 (Active: 226 Idle: 33 Down: 0)'
>>> s = '{' + s.replace(')', '').replace('(', '') + '}'
>>> temp = re.sub(r'([a-zA-Z][^:]+)', r'"\1"', s)
>>> temp = re.sub(r'(\d+)', r'\1,', temp)
>>> dict_of_vals = eval(temp)

这会为您留下包含所需值的字典。这仍将适用于超过4个数字,并且订单不再重要