Python正则表达式命名组

时间:2013-01-01 15:55:35

标签: python regex

我目前正在尝试解决在字符串

之后拆分的问题
[@x arg-xa, arg. xb, arg xc @y arg-ya, arg. yb, arg yc @z arg-za, arg. zb, arg zc]

进入某种结构化的dict对象。如下列表的结果将不胜感激:

[
    {
        'command': 'x',
        'args': ['arg-xa', 'arg. xb', 'arg xc']
    },
    {
        'command': 'y',
        'args': ['arg-ya', 'arg. yb', 'arg yc']
    }
    {
        'command': 'z',
        'args': ['arg-za', 'arg. zb', 'arg zc']
    }
]

该命令带有“@”符号前缀,该命令的以下参数用“,”符号分隔。 用string.split('@')分割字符串和一些循环可以工作,但我想知道是否有可能用一个正则表达式来解决这个问题。

也许一些正则表达的大师会如此善良并向我展示光明!

一如既往,非常感谢。 (我使用了搜索,但没有找到解决此类问题的方法)

1 个答案:

答案 0 :(得分:2)

我只是使用.split()并剪切字符串:

import string

s = '@x arg-xa, arg. xb, arg xc @y arg-ya, arg. yb, arg yc @z arg-za, arg. zb, arg zc'

result = []

for part in s.split('@')[1:]:  # `[1:]` skips the first (empty) element
    command, _, arguments = part.partition(' ')

    result.append({
        'command': command,
        'args': map(string.strip, arguments.split(', '))
    })