【发布时间】:2013-11-23 01:41:13
【问题描述】:
我要解决的问题:
s = """X8 ifInDiscards=14308c X8 ifOutDiscards=133796c"""
s1 = """X3 InRXBytes=1257890123 X2 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 已经展示了他的尝试。这已经是一个好兆头了。
-
现在已经编辑了:)
-
+1。感谢您的编辑! :)
-
最后一次编辑我想出的解决方案,但有没有比我的解决方案更好的方法......???