Jawaban:
"2.7.0_bf4fda703454".split("_")
memberikan daftar string:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Ini membagi string di setiap garis bawah. Jika Anda ingin berhenti setelah pemisahan pertama, gunakan "2.7.0_bf4fda703454".split("_", 1)
.
Jika Anda mengetahui fakta bahwa string tersebut berisi garis bawah, Anda bahkan dapat mengekstrak LHS dan RHS menjadi variabel terpisah:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Alternatifnya adalah dengan menggunakan partition()
. Penggunaannya mirip dengan contoh terakhir, hanya saja ia mengembalikan tiga komponen, bukan dua. Keuntungan utamanya adalah bahwa metode ini tidak gagal jika string tidak berisi pemisah.
Pisahkan string pada spasi, dapatkan daftar, tunjukkan tipenya, cetak:
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?']
Jika Anda memiliki dua pembatas di samping satu sama lain, diasumsikan string kosong:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Pisahkan string pada garis bawah dan ambil item ke-5 dalam daftar:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Ciutkan beberapa spasi menjadi satu
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Ketika Anda tidak memberikan parameter ke metode split Python, dokumentasi menyatakan : "run of consecutive whitespace dianggap sebagai pemisah tunggal, dan hasilnya tidak akan berisi string kosong di awal atau akhir jika string memiliki spasi di depan atau di belakang".
Pegang topi Anda, uraikan ekspresi reguler:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Biasa ekspresi "[am] +" berarti huruf kecil a
melalui m
yang terjadi satu kali atau lebih dicocokkan sebagai pembatas. re
adalah perpustakaan yang akan diimpor.
Atau jika Anda ingin mengunyah makanan satu per satu:
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
Jika itu selalu akan menjadi perpecahan LHS / RHS yang rata, Anda juga dapat menggunakan partition
metode yang dibangun ke dalam string. Ini mengembalikan 3-tupel seolah- (LHS, separator, RHS)
olah pemisah ditemukan, dan (original_string, '', '')
jika pemisah tidak ada:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')
partition
metode string, lalu perbarui pertanyaan Anda.