Python ، يُقسم لفصل سلسلة مفصولة بفاصلة ، وإزالة مسافة بيضاء وتحويلها إلى قائمة

اعمال

عند تقسيم سلسلة مفصولة بفواصل إلى قائمة في Python ، إذا لم تكن هناك مسافات بينهما ، فسيعمل فقط Split (). إذا كانت هناك مسافات ، فمن المفيد دمجها مع شريط () لإزالة المسافات الزائدة. بالإضافة إلى ذلك ، يعد استخدام تدوين قائمة الفهم طريقة ذكية للكتابة.

في هذا القسم ، نشرح أولاً ما يلي.

  • قسّم سلسلة بمُحدد معين وأعدها كقائمةsplit()
  • إزالة الأحرف الزائدة من بداية ونهاية السلسلة.strip()
  • تدوين قائمة الإدراك لتطبيق الوظائف والأساليب على عناصر القائمة.

كما يوضح كيفية عمل قائمة بالسلاسل مفصولة بمسافات وفواصل عن طريق إزالة المسافات ، كما هو موضح أدناه.
one, two, three'

بالإضافة إلى ذلك ، سوف نناقش ما يلي

  • كيفية الحصول عليها كقائمة أرقام
  • كيفية استخدام Join () للانضمام إلى قائمة وجعلها سلسلة مرة أخرى

split():قسّم سلسلة بمُحدد معين وأعدها كقائمة

باستخدام طريقة split () للسلاسل ، يمكنك تقسيم سلسلة ذات محدِّد محدد والحصول عليها كقائمة (مصفوفة). يمكن تحديد المحدد المحدد بواسطة الوسيطة التالية.sep

إذا تم حذف الوسيطة sep ولم يتم تحديد محدد ، فإنه يقسم السلسلة بمسافات ويعيد قائمة. ستؤدي المسافات وعلامات الجدولة المتتالية أيضًا إلى تقسيم القائمة ، لذلك إذا كنت تريد إنشاء قائمة بالسلاسل المحددة بعلامات جدولة ، فيمكنك استخدام split () بدون الوسيطة.

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

إذا تم تحديد محدد في وسيطة sep ، فإنه يقسم القائمة على تلك السلسلة ويعيد قائمة.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

في حالة وجود سلسلة مفصولة بفاصلة ، إذا لم يكن هناك مسافة بيضاء إضافية ، فلا توجد مشكلة ، ولكن إذا قمت بتشغيل split () بفاصلة كمحدد لسلسلة مفصولة بفاصلة + مسافة بيضاء ، فستنتهي مع قائمة من السلاسل مع ترك مسافة بيضاء في البداية.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

يمكنك استخدام فاصلة + مسافة كمحدد على النحو التالي ، لكنها لن تعمل إذا كان عدد المسافات في السلسلة الأصلية مختلفًا., '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

يمكن استخدام شريط طريقة السلسلة () ، الذي سيتم شرحه بعد ذلك ، للتعامل مع مسافتين.

strip():إزالة الأحرف الزائدة من بداية ونهاية السلسلة.

strip () هي طريقة لإزالة الأحرف الزائدة من بداية السلسلة النصية ونهايتها.

إذا تم حذف الوسيطة ، يتم إرجاع سلسلة جديدة مع إزالة أحرف المسافات. لم يتم تغيير السلسلة الأصلية نفسها.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

إذا تم تحديد سلسلة كوسيطة ، فستتم إزالة الأحرف الموجودة في السلسلة.

s = '-+-one-+-'
print(s.strip('-+'))
# one

في هذه الحالة ، لا يتم إزالة المسافات. لذلك ، إذا كنت تريد إزالة المسافة البيضاء أيضًا ، فمرر سلسلة تتضمن مسافات كوسيطة ، كما هو موضح أدناه.-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

يتعامل الشريط () مع كلا الطرفين ، ولكن الوظائف التالية متاحة أيضًا.

  • lstrip():معالجة البداية فقط
  • rstrip():معالجة نهاية السطر فقط.

تدوين استيعاب القائمة: تطبيق الوظائف والأساليب على عناصر القائمة

إذا كنت تريد تطبيق دالة أو طريقة على عناصر القائمة ، فمن الذكاء استخدام تدوين list comprehension بدلاً من for loop إذا كنت تريد الحصول على القائمة في النهاية.

هنا ، نطبق شريط () على القائمة التي تم الحصول عليها عن طريق تقسيم السلسلة مع Split (). يمكن إزالة المسافة البيضاء الزائدة في سلسلة مفصولة بفواصل تحتوي على مسافة بيضاء لعمل قائمة.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

عندما يتم تطبيق ذلك على سلسلة فارغة ، يمكن الحصول على قائمة بسلسلة واحدة فارغة كعنصر.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

إذا كنت ترغب في الحصول على قائمة فارغة لسلسلة فارغة ، يمكنك إعداد فرع شرطي في تدوين قائمة الفهم.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

one, , three'
أيضًا ، إذا كان عنصر مفصول بفاصلة مفقودًا ، كما هو موضح أعلاه ، فإن الطريقة الأولى ستدرجه كعنصر سلسلة فارغ.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

إذا كنت تريد تجاهل الأجزاء المفقودة ، يمكنك إعداد فرع شرطي في تدوين قائمة الفهم.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

احصل على قائمة الأرقام

إذا كنت ترغب في الحصول على سلسلة من الأرقام مفصولة بفواصل كقائمة أرقام بدلاً من سلسلة ، فقم بتطبيق int () أو float () لتحويل السلسلة إلى رقم في تدوين list comprehension.

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join():دمج قائمة والحصول عليها كسلسلة

في النمط المعاكس ، إذا كنت تريد الانضمام إلى قائمة والحصول على سلاسل مفصولة بمحدد معين ، فاستخدم طريقة الانضمام ().

من السهل ارتكاب خطأ ، لكن لاحظ أن التابع () هو طريقة سلسلة ، وليست طريقة قائمة. تم تحديد القائمة كوسيطة.

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

يمكنك كتابتها في سطر واحد على النحو التالي.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

إذا كنت ترغب فقط في تغيير محدد ثابت ، فمن الأسهل استبداله بطريقة الاستبدال ().

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three