2017-03-17 5 views
0

Ich möchte Zeichenfolge im Wörterbuch konvertieren und meine String ist alsString zu dict Umwandlung

order_id=BW_225996&tracking_id=306003083135&bank_ref_no=1489730168508&order_status=Success&failure_message=&payment_mode=Net Banking&card_name=AvenuesTest&status_code=null&status_message=Y&currency=INR&amount=100.0&billing_name=test&billing_address=test&billing_city=Pune&billing_state=Maharashtra&billing_zip=411041&billing_country=India&billing_tel=1234567890&[email protected]&delivery_name=test&delivery_address=test&delivery_city=Pune&delivery_state=Maharashtra&delivery_zip=411041&delivery_country=India&delivery_tel=1234567890&merchant_param1=3&merchant_param2=&merchant_param3=&merchant_param4=&merchant_param5=&vault=N&offer_type=null&offer_code=null&discount_value=0.0&mer_amount=100.0&eci_value=null&retry=N&response_code=0&billing_notes=&trans_date=17/03/2017 11:27:30&bin_country= 
+0

Dies ist eine Abfragezeichenfolge. Django hat bereits eingebaute Unterstützung für das Parsen dieser. –

Antwort

1
folgen

Sie split Methode können diese Zeichenfolge aufgeteilt:

c="order_id=BW_225996&tracking_id=306003083135" 

print {p.split("=")[0]:p.split("=")[1] for p in c.split("&")} 

Ausgang:

{'order_id': 'BW_225996', 'tracking_id': '306003083135'} 
+0

Vielen Dank für die Antwort, mein Problem –

0
_str="order_id=BW_225996&tracking_id=306003083135&bank_ref_no=1489730168508&order_status=Success&failure_message=&payment_mode=Net Banking&card_name=AvenuesTest&status_code=null&status_message=Y&currency=INR&amount=100.0&billing_name=test&billing_address=test&billing_city=Pune&billing_state=Maharashtra&billing_zip=411041&billing_country=India&billing_tel=1234567890&[email protected]&delivery_name=test&delivery_address=test&delivery_city=Pune&delivery_state=Maharashtra&delivery_zip=411041&delivery_country=India&delivery_tel=1234567890&merchant_param1=3&merchant_param2=&merchant_param3=&merchant_param4=&merchant_param5=&vault=N&offer_type=null&offer_code=null&discount_value=0.0&mer_amount=100.0&eci_value=null&retry=N&response_code=0&billing_notes=&trans_date=17/03/2017 11:27:30&bin_country=" 

{a:b for a,b in [i.split("=") for i in _str.split('&')]} 
+0

Vielen Dank für die Antwort –

0

Sie können versuchen:

>>> s = """order_id=BW_225996&tracking_id=306003083135&bank_ref_no=1489730168508&order_status=Success&failure_message=&payment_mode=Net Banking&card_name=AvenuesTest&status_code=null&status_message=Y&currency=INR&amount=100.0&billing_name=test&billing_address=test&billing_city=Pune&billing_state=Maharashtra&billing_zip=411041&billing_country=India&billing_tel=1234567890&[email protected]&delivery_name=test&delivery_address=test&delivery_city=Pune&delivery_state=Maharashtra&delivery_zip=411041&delivery_country=India&delivery_tel=1234567890&merchant_param1=3&merchant_param2=&merchant_param3=&merchant_param4=&merchant_param5=&vault=N&offer_type=null&offer_code=null&discount_value=0.0&mer_amount=100.0&eci_value=null&retry=N&response_code=0&billing_notes=&trans_date=17/03/2017 11:27:30""" 
>>> s_list = s.split("&") 
>>> s_list 
['order_id=BW_225996', 'tracking_id=306003083135', 'bank_ref_no=1489730168508', 'order_status=Success', 'failure_message=', 'payment_mode=Net Banking', 'card_name=AvenuesTest', 'status_code=null', 'status_message=Y', 'currency=INR', 'amount=100.0', 'billing_name=test', 'billing_address=test', 'billing_city=Pune', 'billing_state=Maharashtra', 'billing_zip=411041', 'billing_country=India', 'billing_tel=1234567890', '[email protected]', 'delivery_name=test', 'delivery_address=test', 'delivery_city=Pune', 'delivery_state=Maharashtra', 'delivery_zip=411041', 'delivery_country=India', 'delivery_tel=1234567890', 'merchant_param1=3', 'merchant_param2=', 'merchant_param3=', 'merchant_param4=', 'merchant_param5=', 'vault=N', 'offer_type=null', 'offer_code=null', 'discount_value=0.0', 'mer_amount=100.0', 'eci_value=null', 'retry=N', 'response_code=0', 'billing_notes=', 'trans_date=17/03/2017 11:27:30'] 
>>> s_dict = {} 
>>> for data in s_list: 
    s_dict[data.split("=")[0]] = data.split("=")[1] 


>>> print s_dict 
{'billing_tel': '1234567890', 'status_code': 'null', 'delivery_country': 'India', 'delivery_name': 'test', 'currency': 'INR', 'delivery_city': 'Pune', 'billing_country': 'India', 'billing_notes': '', 'retry': 'N', 'billing_email': '[email protected]', 'billing_zip': '411041', 'billing_name': 'test', 'merchant_param5': '', 'order_status': 'Success', 'status_message': 'Y', 'mer_amount': '100.0', 'merchant_param3': '', 'merchant_param2': '', 'delivery_zip': '411041', 'card_name': 'AvenuesTest', 'delivery_tel': '1234567890', 'billing_address': 'test', 'order_id': 'BW_225996', 'eci_value': 'null', 'offer_code': 'null', 'merchant_param4': '', 'payment_mode': 'Net Banking', 'offer_type': 'null', 'discount_value': '0.0', 'delivery_address': 'test', 'billing_city': 'Pune', 'merchant_param1': '3', 'response_code': '0', 'failure_message': '', 'bank_ref_no': '1489730168508', 'amount': '100.0', 'trans_date': '17/03/2017 11:27:30', 'tracking_id': '306003083135', 'vault': 'N', 'delivery_state': 'Maharashtra', 'billing_state': 'Maharashtra'} 
+0

Danke Antwort gelöst hat viel Danke so für die Antwort –

+0

Sie für Sie –

0

Eine einfache Schleife könnte dieses Problem beheben:

a='order_id=BW_225996&tracking_id=306003083135&bank_ref_no=1489730168508&order_status=Success&failure_message=&payment_mode=Net Banking&card_name=AvenuesTest&status_code=null&status_message=Y&currency=INR&amount=100.0&billing_name=test&billing_address=test&billing_city=Pune&billing_state=Maharashtra&billing_zip=411041&billing_country=India&billing_tel=1234567890&[email protected]&delivery_name=test&delivery_address=test&delivery_city=Pune&delivery_state=Maharashtra&delivery_zip=411041&delivery_country=India&delivery_tel=1234567890&merchant_param1=3&merchant_param2=&merchant_param3=&merchant_param4=&merchant_param5=&vault=N&offer_type=null&offer_code=null&discount_value=0.0&mer_amount=100.0&eci_value=null&retry=N&response_code=0&billing_notes=&trans_date=17/03/2017 11:27:30&bin_country=' 

dic={} 
[dic.update({e.split('=')[0] : e.split('=')[1]}) for e in a.split('&')] 
+0

Vielen Dank für die Antwort für mein Problem –

0

Bitte diesen einfachen Code versuchen, dies wird Ihre erforderliche Ausgabe produzieren,

input_string = 'order_id=BW_225996&tracking_id=306003083135&bank_ref_no=1489730168508' 

splitted_string = input_string.split('&') 

final_output = {} 

for items in splitted_string: 
    dic_values = items.split('=') 
    final_output[dic_values[0]] = dic_values[1] 

print final_output 

Ausgang:

{'order_id': 'BW_225996', 'tracking_id': '306003083135', 'bank_ref_no': '1489730168508'} 
  • Zunächst teilen wir die Zeichenfolge mit '&'.
  • Dann teilen wir alle Elemente in der Liste mit '=' als Wörterbuchschlüssel und Werte.

Bitte lassen Sie mich wissen interms Fragen.

+0

Vielen Dank für die Antwort –

+0

Sie sind willkommen .. :) –

0

Hier ist eine Funktion, die die Arbeit für Sie erledigen wird. Er führt die folgenden Operationen aus:

  1. Brechen Sie die angegebene Zeichenfolge in eine Liste der Zeichenfolgen, die Schlüssel/Wert-Paare darstellen.
  2. Teilen Sie jede Zeichenfolgendarstellung eines Schlüssel/Wert-Paares in einen Schlüssel und den zugehörigen Wert.
  3. Fügen Sie jeden Schlüssel und seinen zugehörigen Wert in eine dict ein.

parse_dict

def parse_dict(string): 
    dictionary = dict() 
    key_value_pairs = string.split('&') 
    for pair in key_value_pairs: 
     key, value = pair.split('=') 
     dictionary[key] = value 
    return dictionary 

Beispiel Nutzung:

parsed_dict = parse_dict("order_id=BW_225996&tracking_id=306003083135") 
print(parsed_dict) 

Ausgang:

{'order_id': 'BW_225996', 'tracking_id': '306003083135'}

Ich hoffe, dies beantwortet Ihre Frage. Glückliche Kodierung!

+0

Vielen Dank für die Antwort –

+0

Gern geschehen. Es war mir ein Vergnügen. –

0

Da diese Frage markiert ist, ist dies die kürzeste und richtige Lösung:

from django.http import QueryDict 

query_string = 'order_id=BW_225996&tracking_id=306003083135&bank_ref_no=1489730168508' 
qdict = QueryDict(query_string) # dict like object 

Im Gegensatz zu den anderen Lösungen dieser befasst sich mit URL-Codierung und mehrere Werte pro Schlüssel automatisch (verwenden getlist()).