Câu trả lời:
"2.7.0_bf4fda703454".split("_")
đưa ra danh sách các chuỗi:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Điều này sẽ chia chuỗi ở mọi dấu gạch dưới. Nếu bạn muốn nó dừng lại sau lần chia đầu tiên, hãy sử dụng "2.7.0_bf4fda703454".split("_", 1)
.
Nếu bạn biết thực tế rằng chuỗi chứa dấu gạch dưới, bạn thậm chí có thể giải nén LHS và RHS thành các biến riêng biệt:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Một thay thế là sử dụng partition()
. Cách sử dụng tương tự như ví dụ cuối cùng, ngoại trừ việc nó trả về ba thành phần thay vì hai. Ưu điểm chính là phương pháp này không bị lỗi nếu chuỗi không chứa dấu phân tách.
Tách một chuỗi trên không gian, lấy một danh sách, hiển thị loại của nó, in ra:
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?']
Nếu bạn có hai dấu phân cách bên cạnh nhau, chuỗi trống được giả định:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Tách một chuỗi trên dấu gạch dưới và lấy mục thứ 5 trong danh sách:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Thu gọn nhiều khoảng trắng thành một
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Khi bạn không truyền tham số nào cho phương thức phân tách của Python, tài liệu cho biết : "các khoảng trắng liên tiếp được coi là một dấu phân tách duy nhất và kết quả sẽ không chứa chuỗi trống ở đầu hoặc cuối nếu chuỗi có khoảng trắng đầu hoặc cuối".
Hãy giữ lấy chiếc mũ của bạn, các chàng trai, hãy phân tích cú pháp trên một biểu thức chính quy:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Các biểu hiện thường xuyên "[am] +" có nghĩa là các chữ cái viết thường a
qua m
xảy ra một hoặc nhiều lần được kết hợp như một dấu phân cách. re
là một thư viện được nhập.
Hoặc nếu bạn muốn cắt từng món một:
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
Nếu nó luôn luôn là một phân tách LHS / RHS chẵn, bạn cũng có thể sử dụng partition
phương pháp được tích hợp trong chuỗi. Nó trả về một bộ 3 như (LHS, separator, RHS)
thể dấu phân tách được tìm thấy và (original_string, '', '')
nếu dấu phân tách không xuất hiện:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')
partition
phương pháp của chuỗi, và sau đó cập nhật câu hỏi của bạn.