Yanıtlar:
"2.7.0_bf4fda703454".split("_")
dizelerin bir listesini verir:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Bu, dizeyi her alt çizgide böler . İlk bölünmeden sonra durmasını istiyorsanız, kullanın "2.7.0_bf4fda703454".split("_", 1)
.
Dizenin alt çizgi içerdiğini biliyorsanız, LHS ve RHS'yi ayrı değişkenlere ayırabilirsiniz:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Bir alternatif kullanmaktır partition()
. Kullanım, iki yerine üç bileşen döndürmesi dışında son örneğe benzer. Temel avantajı, dizge ayırıcı içermiyorsa bu yöntemin başarısız olmamasıdır.
Bir dizgeyi uzaya bölün, bir liste alın, türünü gösterin, yazdırın:
el@apollo:~/foo$ python
>>> mystring = "What does the fox say?"
>>> mylist = mystring.split(" ")
>>> print type(mylist)
<type 'list'>
>>> print mylist
['What', 'does', 'the', 'fox', 'say?']
Yan yana iki sınırlayıcınız varsa boş dize varsayılır:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Alt çizgiye bir dize bölün ve listedeki 5. öğeyi alın:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Birden çok boşluğu tek bir alana daraltın
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Python'un bölme yöntemine hiçbir parametre iletmezseniz , dokümantasyon şunu belirtir : "ardışık beyaz boşluklar tek bir ayırıcı olarak kabul edilir ve eğer dizginin başında veya sonunda boşluk varsa, sonuç başında veya sonunda boş dizeler içermez".
Şapkalarınıza tutun çocuklar, düzenli bir ifadeyle ayrıştırın:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
"[Am] +" normal ifadesi, bir veya daha fazla kez a
geçen küçük harflerin m
sınırlayıcı olarak eşleştirildiği anlamına gelir . re
içe aktarılacak bir kitaplıktır.
Veya öğeleri birer birer parçalamak istiyorsanız:
el@apollo:~/foo$ python
>>> mystring = "theres coffee in that nebula"
>>> mytuple = mystring.partition(" ")
>>> print type(mytuple)
<type 'tuple'>
>>> print mytuple
('theres', ' ', 'coffee in that nebula')
>>> print mytuple[0]
theres
>>> print mytuple[2]
coffee in that nebula
Her zaman eşit bir LHS / RHS ayrımı olacaksa, partition
dizelerde yerleşik olan yöntemi de kullanabilirsiniz . (LHS, separator, RHS)
Ayırıcı bulunuyormuş gibi bir 3 demet döndürür ve ayırıcı (original_string, '', '')
yoksa:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')
partition
Dizelerin yöntemini okuyun ve ardından sorunuzu güncelleyin.