Прохождение разбора строки Python
Разделить строку на пробел, получить список, показать его тип, распечатать его:
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?']
Еслиу вас есть два разделителя рядом друг с другом, предполагается пустая строка:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Разделите строку на подчеркивание и возьмите 5-й элемент в списке:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Свернуть несколько пробелов в один
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Когда вы не передаете ни одного параметра в метод разделения Python, документация заявляет : "выполнение последовательных пробеловрассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или конце, если строка имеет начальный или конечный пробел ".
Держитесь за ваши шляпы, парни, анализируйте по регулярному выражению:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Регулярное выражение «[am] +» означает, что строчные буквы a
- m
, встречающиеся один или несколько раз, сопоставляются как разделитель.re
- это библиотека для импорта.
Или, если вы хотите разбивать элементы по одному:
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