اذهب إلى المحتوى
  • 0

كيف أحوّل قائمة في سلسلة نصية إلى قائمة في بايثون؟

MaxReve

السؤال

كنت أتسائل عمّا إذا كان هنالك طريقة بسيطة لتحويل سلسلة نصية مثل هذه:

x = u'[ "A","B","C" , " D"]'

إلى متغير من نوع قائمة حتى لو كانت السلسلة النصية بها فراغات(كالمثال السابق):

x = ["A","B","C","D"]
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

في العادة يتم استخدام eval لتحويل سلسلة نصية إلى شيفرة برمجية لكن بما أنه يمكن أن تكون السلسلة النصية من مدخلات المستخدم لذلك سنستخدم طرق غيرها لأسباب أمنية.
إذا كنت تستخدم الإصدار 2.6 من بايثون فما فوق يمكنك في هذه الحالة استعمال ast بدلا من eval كما في المثال التالي:

import ast
l = ast.literal_eval('[ "A","B","C" , " D"]')
l = [i.strip() for i in l]

وهنالك طريقة أخرى باستخدام وحدة numpy والتي ستُرجع قائمة بدون تعديلات (بدون حذف الفراغات الزائدة):

x = u'[ "A","B","C" , " D"]'
list_string = str(x)
import numpy as np
print np.array(list_string)

والنتيجة:

>>>
[ "A","B","C" , " D"]

المصدر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الطريقة الأبسط لذلك هي:

x = '[ "A","B","C" , " D"]'
print(list(eval(x)))

إذا كنت تريد أيضًا إزالة المسافت الفارغة:

x = [x.strip() for x in eval('[ "A","B","C" , " D"]')]

أو من خلال الدالة loads من json:

import json
x = '[ "A","B","C" , " D"]'
json.loads(x)
# ['A', 'B', 'C', ' D']

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...