Я пытаюсь разбить эту строку в python: 2.7.0_bf4fda703454
Я хочу разбить эту строку на подчеркивании _
, чтобы я мог использовать значение с левой стороны.
Я пытаюсь разбить эту строку в python: 2.7.0_bf4fda703454
Я хочу разбить эту строку на подчеркивании _
, чтобы я мог использовать значение с левой стороны.
"2.7.0_bf4fda703454".split("_")
выдает список строк:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Это разбивает строку в каждом подчеркивании. Если вы хотите, чтобы он остановился после первого разделения, используйте "2.7.0_bf4fda703454".split("_", 1)
.
Если вы точно знаете, что строка содержит подчеркивание, вы можете даже распаковать LHS и RHS в отдельные переменные:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Альтернативой является использование partition()
. Использование аналогично последнему примеру, за исключением того, что он возвращает три компонента вместо двух. Основное преимущество заключается в том, что этот метод не завершается ошибкой, если строка не содержит разделитель.
Разделить строку на пробел, получить список, показать его тип, распечатать его:
[email protected]:~/foo$ python
>>> mystring = "What does the fox say?"
>>> mylist = mystring.split(" ")
>>> print type(mylist)
<type 'list'>
>>> print mylist
['What', 'does', 'the', 'fox', 'say?']
Если у вас есть два разделителя рядом друг с другом, предполагается пустая строка:
[email protected]:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Разделить строку на подчеркивание и захватить 5-й элемент в списке:
[email protected]:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Свернуть несколько пробелов в один
[email protected]:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Когда вы не передаете параметр Python split method, в документах указано: "пробежки последовательных пробелов рассматриваются как один разделитель, а результат не будет содержать пустых строки в начале или в конце, если строка имеет начальные или конечные пробелы".
Держись за своих мальчиков-мальчиков, проанализируйте регулярное выражение:
[email protected]:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Регулярное выражение "[a-m] +" означает, что строчные буквы a
через m
, которые происходят один или несколько раз, сопоставляются как разделитель. re
- это библиотека, которую нужно импортировать.
Или, если вы хотите грабить элементы по одному:
[email protected]:~/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
Если это всегда будет разделение LHS/RHS, вы также можете использовать метод partition
, встроенный в строки. Он возвращает 3-кортеж как (LHS, separator, RHS)
, если разделитель найден, и (original_string, '', '')
, если разделитель не присутствовал:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')