我试图解决的问题:复杂的字符串分割与多个空格
s = """X8 ifInDiscards=14308c X8 ifOutDiscards=133796c"""
s1 = """X3 InRXBytes=125789X2 OutRXBytes=871625343 X5 OutRXBytes=71625343"""
让我们上面的两个字符串作为例子。我想每个字符串中分离的部分分割:
对于字符串s,
part1 = '''X8 ifInDiscards=14308c'''
part2 = '''X8 ifOutDiscards=133796c'''
对于字符串S1,
part1 = '''X3 InRXBytes= 1257890123'''
part2 = '''X2 OutRXBytes= 871625343'''
part3 = '''X5 OutRXBytes= 71625343'''
因此,如在上述两个串的例子看到的,所述格式要拆分的字符串为:
'''metric1=value1 metric2=value2....metricN=valueN'''
如上例所示,度量标准名称中可以包含空格。
到目前为止,这是我已经试过,没有运气:
>>> s = """X8 ifInDiscards=14308c X8 ifOutDiscards=133796c"""
>>>
>>>
>>>
>>> s.split('=')
['X8 ifInDiscards', '14308c X8 ifOutDiscards', '133796c']
>>>
的问题是,我该如何分割字符串,以最有效的方式是什么?这是一个更办法我已经没有运气尝试:
>>> s 'X8 ifInDiscards=14308c X8 ifOutDiscards=133796c'
>>> pattern = r'''[0-9a-zA-Z]?=[0-9a-zA-Z]? [0-9a-zA-Z]?=[0-9a-zA-Z]?'''
>>> re.search(pattern, s)
度量名称可以变长,并且可能在它的多个空格....
最后编辑时间: 这里是最后的办法这似乎只对工作字符串“S”而不是字符串“S1”,我想知道是否有更好的方法来做到这一点:
>>> pattern = r'''([0-9a-zA-Z ].*?=[0-9a-zA-Z ].*?) ([0-9a-zA-Z ].*?=[0-9a-zA-Z ].*)'''
>>> s
'X8 ifInDiscards=14308c X8 ifOutDiscards=133796c'
>>> re.search(pattern, s).groups()
('X8 ifInDiscards=14308c', 'X8 ifOutDiscards=133796c')
问题是如何以最有效的方式拆分字符串? 这里有一个我试过没有运气的方法: >>> s 'X8 ifInDiscards = 14308c X8 ifOutDiscards = 133796c' >>> pattern = r'''[0-9a-zA-Z]?= [0-9A-ZA-Z]? [0-9a-zA-Z]?= [0-9a-zA-Z]?''' >>> re.search(pattern,s) –
@TJonS:写起来可能会好很多,但是OP已经展示了他的尝试。这已经是一个好兆头。 – user2357112
已被编辑:) –