ali_agha نشر 8 أكتوبر 2015 أرسل تقرير نشر 8 أكتوبر 2015 أريد تحويل سلسلة نصية على شكل قاموس إلى قاموس كما في هذا المثال:s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"فما هي الطريقة الأفضل لفعل ذلك وهل هنالك حلول أخرى بدون استخدام eval ؟ اقتباس
0 هشام رزق الله نشر 8 أكتوبر 2015 أرسل تقرير نشر 8 أكتوبر 2015 هنالك العديد من الخيارات الجيدة بدلا من eval، فبداية من الإصدار 2.6 للبايثون تمت إضافة دالة literal_eval إلى مكتبة ast والتي سهلت من عمليات التحويل للسلاسل النصية كما في المثال التالي:>>> import ast >>> ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'kitty'}") {'muffin': 'lolz', 'foo': 'kitty'} وتعتبر هذه الدالة أفضل من eval حسب توثيقها الرسمي.ويمكنك أيضا حل هذه المشكلة عن طريق استخدام JSON الذي سيقوم باستبدال الرمز ' بالرمز المزدوج " كما في هذا المثال:import json s = "{'muffin' : 'lolz', 'foo' : 'kitty'}" json_acceptable_string = s.replace("'", "\"") d = json.loads(json_acceptable_string) # d = {u'muffin': u'lolz', u'foo': u'kitty'} يذكر أنه إذا كان لديك الرمز ' كجزء من المفاتيح أو القيم فسوف تفشل عملية التحويل بسبب تبديل الأحرف.المصدر اقتباس
السؤال
ali_agha
أريد تحويل سلسلة نصية على شكل قاموس إلى قاموس كما في هذا المثال:
فما هي الطريقة الأفضل لفعل ذلك وهل هنالك حلول أخرى بدون استخدام eval ؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.