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 に答える