加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – RegEx将文本字符串拆分为dict作为组

发布时间:2020-12-20 13:08:37 所属栏目:Python 来源:网络整理
导读:我正在尝试RegEx字符串输出并作为一组文本添加到字典中,我正在使用re.split(). 我的字符串输出是: mpathag (36005076801b2014804000000000001cd) dm-7 Test,2145size=488G features='1 queue_if_no_path' hwhandler='0' wp=rw|-+- policy='service-time 0'
我正在尝试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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读