2024-05-03 12:24:03 发布
网友
我的原木结构看起来像
a b c|
例如:
应与…相匹配
a: Mozilla, b: 5.0, c: white
但我的日志中有一个条目是:
iOS |
可以解释为
a:iOS, b:null, c:null
我用的是python3re,正在和命名组匹配吗?P
有没有办法做到这一点?在
您可以将模式放入如下列表中:
>>> pattern = ['a', 'b', 'c']
然后使用re.findall()查找所有相关部分,然后使用zip和{}创建相关字典:
re.findall()
zip
>>> m = re.match(r"(?P<a>[^\s]+)(\s+(?P<b>[^\s]+))?(\s+(?P<c>[^\s]+))?\s*\|") >>> m.groups() ('iOS', None, None) >>> m.groupdict() {'c': None, 'a': 'iOS', 'b': None} >>> m = re.match(r"(?P<a>[^\s]+)(\s+(?P<b>[^\s]+))?(\s+(?P<c>[^\s]+))?\s*\|") >>> m.groups() ('Mozilla', ' 5.0', ' white') >>> m.groupdict() {'c': 'white', 'a': 'Mozilla', 'b': '5.0'}
更新:
我注意到以前的版本在返回的组中包含了空格-我将\s+分解到(?)?P<;>gt;…)来节省几个字节,但它有副作用。所以我修正了这个问题,并在最后一个“|”之前使它能容忍空格
您可以将模式放入如下列表中:
然后使用}创建相关字典:
^{pr2}$re.findall()
查找所有相关部分,然后使用zip
和{更新:
我注意到以前的版本在返回的组中包含了空格-我将\s+分解到(?)?P<;>gt;…)来节省几个字节,但它有副作用。所以我修正了这个问题,并在最后一个“|”之前使它能容忍空格
相关问题 更多 >
编程相关推荐