هل هناك وظيفة في بايثون لتقسيم سلسلة دون تجاهل المسافات؟

StackOverflow https://stackoverflow.com/questions/113534

  •  02-07-2019
  •  | 
  •  

سؤال

هل هناك وظيفة في بايثون لتقسيم سلسلة دون تجاهل المسافات في القائمة الناتجة؟

على سبيل المثال:

s="This is the string I want to split".split()

يعطيني

>>> s
['This', 'is', 'the', 'string', 'I', 'want', 'to', 'split']

أريد شيئا مثل

['This',' ','is',' ', 'the',' ','string', ' ', .....]
هل كانت مفيدة؟

المحلول

>>> import re
>>> re.split(r"(\s+)", "This is the string I want to split")
['This', ' ', 'is', ' ', 'the', ' ', 'string', ' ', 'I', ' ', 'want', ' ', 'to', ' ', 'split']

يؤدي استخدام أقواس الالتقاط في re.split() إلى قيام الدالة بإرجاع الفواصل أيضًا.

نصائح أخرى

لا أعتقد أن هناك وظيفة في المكتبة القياسية تقوم بذلك بنفسها، ولكن "التقسيم" يقترب

ربما تكون أفضل طريقة هي استخدام التعبيرات العادية (وهي الطريقة التي سأفعل بها ذلك بأي لغة!)

import re
print re.split(r"(\s+)", "Your string here")

إجابة سخيفة فقط من أجل ذلك:

mystring.replace(" ","! !").split("!")

الجزء الصعب فيما تحاول القيام به هو أنك لا تمنحه طابعًا يمكن الانقسام عليه.يقوم التابع Split()‎ بتفجير سلسلة من الحرف الذي تقدمه له، ويزيل هذا الحرف.

ربما قد يساعد هذا:

s = "String to split"
mylist = []
for item in s.split():
    mylist.append(item)
    mylist.append(' ')
mylist = mylist[:-1]

فوضوي، لكنه سيفي بالغرض بالنسبة لك...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top