2011-08-17 6 views
4

私は文字列を持っていると言う:pythonを使用して文字列の変数をre.subと置き換えてリストを反復する方法はありますか?

s = 'deviceId={servicename.DeviceID}&deviceGroupID={servicename.GroupID}&abcd=dkef' 

私は括弧内のアイテムのいくつかのXMLSを解析したデータを得ることができます。データを取得した後、私は括弧{}内のアイテムのためのこれらの結果(約)を得dictsetのコンビネータを使用する:

['ApplC3LDJXGEDCP7', '10'] 
['ApplC3LDJXGEDCP7', '11'] 
['ApplC3LDJXGEDCP7', '12'] 
['ApplC3LDJXGEDCP7', '13'] 
['androidc1596699510', '14'] 

Dictset組合せがアイテム[デバイスID、グループID]のリストを返します。私がPythonの初心者であることを考慮して、このリストを反復して、文字列内の項目を検索/置換するにはどうすればよいですか?助けてください!

私がこれまでに試したことを追加してみましょう。Forを使ってリストを反復でき、re.subを使ってリストから1つのアイテムを置き換えることができました。しかし、コードでは、両方のアイテムを一度に置き換える必要があります。私が使用する正規表現は r "{。+?}"

+0

私はまた、私はそう遠私が使用してリストを反復処理する可能性が試されているものを追加してみましょうとre.subを使用してリストから1つのアイテムを置き換えることができます。しかし、コードでは、両方のアイテムを一度に置き換える必要があります。私が使用する正規表現は r "\ {。+?\}" – sunnysideup

+1

コードを表示します。 – agf

+0

事実上同じ質問が尋ねられます:http://stackoverflow.com/questions/7087905/python-with-regex-to-replace-strings-reursively – hamstergene

答えて

3

を使用して、単一のsubを呼び出し、必要なものを返す関数を渡します。

より良いアプローチは、パラメータが欠落し、パラメータの並べ替えを許容すること、 urllib.parse.parse_qsを使用することであってもよい
s = 'deviceId={servicename.DeviceID}&deviceGroupID={servicename.GroupID}&abcd=dkef' 
r = ['ApplC3LDJXGEDCP7', '10'] 
print(re.sub(r'{.+?}', lambda match: r.pop(0), s, count=len(r))) 
# deviceId=ApplC3LDJXGEDCP7&deviceGroupID=10&abcd=dkef 

など

+0

ねえ、ありがとう、それはトリックをした! – sunnysideup

関連する問題