我正在尝试解析此字符串,以便在Python中获取总活动,空闲和关闭节点的总节点数:259(活动:226空闲:33向下:0)。我正在使用空格,但它不是最有效的方式,提取字符串信息的正则表达式将是什么样的
答案 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个数字,并且订单不再重要