首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegEx将文本字符串拆分成字典作为组

RegEx将文本字符串拆分成字典作为组
EN

Stack Overflow用户
提问于 2015-11-18 17:26:38
回答 1查看 99关注 0票数 4

我正在尝试RegEx字符串输出,并将其作为一组文本添加到字典中,为此我使用了re.split()

我的字符串输出是:

代码语言:javascript
复制
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

下面是我的解析代码:

代码语言:javascript
复制
    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从文本中删除了模式,是否可以在不删除分隔符的情况下拆分?

输出结果如下:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2015-11-18 17:55:38

如果模式包含捕获组,则不会排除该组:

代码语言:javascript
复制
>>> re.split(',', '1,2,3')  # without capturing group
['1', '2', '3']
>>> re.split('(,)', '1,2,3')  # with capturing group
['1', ',', '2', ',', '3']
>>> xs = re.split('(,)', '1,2,3')
>>> [part1+part2 for part1, part2 in zip(xs[1::2], xs[2::2])]
[',2', ',3']

代码语言:javascript
复制
devices = re.split('(mpath)', output)
for part1, part2 in zip(devices[1::2], devices[2::2]):
    print part1 + part2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33776133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档