ahmed1990 نشر 6 نوفمبر 2015 أرسل تقرير نشر 6 نوفمبر 2015 لنفترض أن لدي السلسلة النصية التالية:this is "a test" أريد أن أفصل هذه السلسلة النصية بناءا على الفراغات مع تجاهل الفراغات داخل علامات الاقتباس، أي أن النتيجة ستكون مشابهة لهذه:['this','is','a test'] اقتباس
0 هشام رزق الله نشر 6 نوفمبر 2015 أرسل تقرير نشر 6 نوفمبر 2015 يمكنك استخدام دالة split من وحدة shlex حيث ستقوم بالمطلوب كما في المثال التالي:>>> import shlex >>> shlex.split('this is "a test"') ['this', 'is', 'a test'] أو يمكنك استخدام التعابير النمطية على الرغم من أن استخدام الطريقة السابقة أفضل بكثير كما في المثال التالي:test = 'this is "a test"' # or "this is 'a test'" # pieces = [p for p in re.split("( |[\\\"'].*[\\\"'])", test) if p.strip()] # From comments, use this: pieces = [p for p in re.split("( |\\\".*?\\\"|'.*?')", test) if p.strip()] شرح التعابير النمطية:[\\\"'] لعلامات الاقتباس المفردة والمزدوجة.* معناها أي شيء( |X) فراغ أو قيمة X.strip() معناها احذف الفراغ وفواصل السلسلة النصية الفارغةومن الطرق الأخرى لفصل محتوى سلسلة نصية يمكنك الاستعانة بوحدة csv مع وضع الفراغ كمُحدد كما في المثال التالي:import csv lines = ['this is "a string"', 'and more "stuff"'] for row in csv.reader(lines, delimiter=" "): print rowوسيكون الناتج:['this', 'is', 'a string'] ['and', 'more', 'stuff'] المصدر اقتباس
السؤال
ahmed1990
لنفترض أن لدي السلسلة النصية التالية:
أريد أن أفصل هذه السلسلة النصية بناءا على الفراغات مع تجاهل الفراغات داخل علامات الاقتباس، أي أن النتيجة ستكون مشابهة لهذه:
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.