0

我目前正在尝试解决拆分以下字符串的问题

[@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('@') 分割字符串和一些循环会起作用,但我想知道是否可以用一个正则表达式来解决这个问题。

也许一些正则表达式大师会这么好心,给我看光!

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

4

1 回答 1

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(', '))
    })
于 2013-01-01T16:00:07.580 回答