2

私は次の文字列を持っています:

string = 'amount=2000|captureDay=0|captureMode=AUTHOR_CAPTURE|currencyCode=978|merchantId=002020000000001|orderId=|transactionDateTime=2012-04-12T12:09:56+02:00|transactionReference=1212943|keyVersion=1|authorisationId=0020000006791167|complementaryCode=|maskedPan=|paymentMeanBrand=IDEAL|paymentMeanType=CREDIT_TRANSFER|responseCode=00'

これからquerydictを作成するにはどうすればよいですか。

item['amount']どちらが返ってくるのか使えるようになりたい2000

編集:

私がこれまでに試したこと:

dict = string.split('|')

出力は次のとおりです。

['amount=2000', 'captureDay=0', 'captureMode=AUTHOR_CAPTURE', 'currencyCode=978', 'merchantId=002020000000001', 'orderId=', 'transactionDateTime=2012-04-12T12:09:56+02:00', 'transactionReference=1212943', 'keyVersion=1', 'authorisationId=0020000006791167', 'complementaryCode=', 'maskedPan=', 'paymentMeanBrand=IDEAL', 'paymentMeanType=CREDIT_TRANSFER', 'responseCode=00']
4

4 に答える 4

7

文字列全体をDjangoのQueryDictに置き換え|て与えることができます。&

QueryDictドキュメントを参照してください

例えば

In [1]: from django.http import QueryDict

In [2]: sample = 'amount=2000|captureDay=0|captureMode=AUTHOR_CAPTURE|currencyCode=978|merchantId=002020000000001|orderId=|transactionDateTime=2012-04-12T12:09:56+02:00|transactionReference=1212943|keyVersion=1|authorisationId=0020000006791167|complementaryCode=|maskedPan=|paymentMeanBrand=IDEAL|paymentMeanType=CREDIT_TRANSFER|responseCode=00'

In [3]: qdict = QueryDict(sample.replace('|','&'))

In [4]: qdict
Out[4]: <QueryDict: {u'orderId': [u''], u'keyVersion': [u'1'], u'transactionReference': [u'1212943'], u'paymentMeanType': [u'CREDIT_TRANSFER'], u'maskedPan': [u''], u'currencyCode': [u'978'], u'paymentMeanBrand': [u'IDEAL'], u'complementaryCode': [u''], u'amount': [u'2000'], u'authorisationId': [u'0020000006791167'], u'responseCode': [u'00'], u'captureMode': [u'AUTHOR_CAPTURE'], u'captureDay': [u'0'], u'transactionDateTime': [u'2012-04-12T12:09:56 02:00'], u'merchantId': [u'002020000000001']}>
于 2012-04-12T10:44:13.447 に答える
3
string = 'amount=2000|captureDay=0|captureMode=AUTHOR_CAPTURE|currencyCode=978|merchantId=002020000000001|orderId=|transactionDateTime=2012-04-12T12:09:56+02:00|transactionReference=1212943|keyVersion=1|authorisationId=0020000006791167|complementaryCode=|maskedPan=|paymentMeanBrand=IDEAL|paymentMeanType=CREDIT_TRANSFER|responseCode=00'
items = dict(item.split('=', 1) for item in string.split('|'))

print items['amount']

(パイプ記号の)最初の分割により、「x=y」形式の文字列のリストが生成されます。2番目の分割では、これらのそれぞれを取得して、2つの要素のリストを返します。次に、この2要素リストのリストがdict()コンストラクターに送られます。

于 2012-04-12T10:21:57.390 に答える
1

をやる:

>>> {i.split("=")[0]:i.split("=")[1] for i in string.split('|')}
于 2012-04-12T10:21:41.600 に答える
0
dict(e.split("=", 1) for e in string.split("|"))
于 2012-04-12T10:21:29.577 に答える