我正在尝试RegEx字符串输出并作为一组文本添加到字典中,我正在使用re.split().
我的字符串输出是:
mpathag (36005076801b2014804000000000001cd) dm-7 Test,2145 size=488G features='1 queue_if_no_path' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=50 status=active | |- 12:0:1:3 sdas 66:192 active ready running | `- 13:0:1:3 sdbi 67:192 active ready running `-+- policy='service-time 0' prio=10 status=enabled |- 12:0:0:3 sdak 66:64 active ready running `- 13:0:0:3 sdba 67:64 active ready running mpathz (36005076801b2014804000000000001c4) dm-0 Test,2145 size=488G features='1 queue_if_no_path' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=50 status=active | |- 12:0:0:0 sdah 66:16 active ready running | `- 13:0:0:0 sdax 67:16 active ready running `-+- policy='service-time 0' prio=10 status=enabled |- 10:0:0:0 sdb 8:16 active ready running `- 13:0:1:0 sdbf 67:144 active ready running
这是我的解析代码:
output = "mpathag (36005076801b2014804000000000001cd) dm-7 Test,2145\ size=488G features='1 queue_if_no_path' hwhandler='0' wp=rw\ |-+- policy='service-time 0' prio=50 status=active\ | |- 12:0:1:3 sdas 66:192 active ready running\ | `- 13:0:1:3 sdbi 67:192 active ready running\ `-+- policy='service-time 0' prio=10 status=enabled\ |- 12:0:0:3 sdak 66:64 active ready running\ `- 13:0:0:3 sdba 67:64 active ready running\ mpathz (36005076801b2014804000000000001c4) dm-0 Test,2145\ size=488G features='1 queue_if_no_path' hwhandler='0' wp=rw\ |-+- policy='service-time 0' prio=50 status=active\ | |- 12:0:0:0 sdah 66:16 active ready running\ | `- 13:0:0:0 sdax 67:16 active ready running\ `-+- policy='service-time 0' prio=10 status=enabled\ |- 10:0:0:0 sdb 8:16 active ready running\ `- 13:0:1:0 sdbf 67:144 active ready running" devices = re.split('mpath',output) for dev in devices: print dev
我的问题是re.split从文本中删除模式,它可能拆分而不删除分隔符?
输出结果如下:
ag (36005076801b2014804000000000001cd) dm-7 Test,2145 size=488G features='1 queue_if_no_path' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=50 status=active | |- 12:0:1:3 sdas 66:192 active ready running | `- 13:0:1:3 sdbi 67:192 active ready running `-+- policy='service-time 0' prio=10 status=enabled |- 12:0:0:3 sdak 66:64 active ready running `- 13:0:0:3 sdba 67:64 active ready running
解决方法
如果模式包含捕获组,则不会排除该组:
>>> re.split(',','1,2,3') # without capturing group ['1','2','3'] >>> re.split('(,)',3') # with capturing group ['1','3'] >>> xs = re.split('(,3') >>> [part1+part2 for part1,part2 in zip(xs[1::2],xs[2::2])] [',2',3']
devices = re.split('(mpath)',output) for part1,part2 in zip(devices[1::2],devices[2::2]): print part1 + part2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。