Как я могу разделить и разобрать строку в Python?


Я пытаюсь разделить эту строку в Python: 2.7.0_bf4fda703454

Я хочу разделить эту строку на символ подчеркивания _ Так что я могу использовать значение на левой стороне.

3 86

3 ответа:

"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'

альтернативой, на которую указывает @S. Lott, является использование partition. Использование похоже на последний пример, за исключением того, что он возвращает три компонента вместо двух. Основное преимущество заключается в том, что этот метод не дает сбоя, если строка не содержит разделителя. Этот метод, однако, требует Python 2.5.

Python string parsing walkthrough

разделить строку на пробел, получить список, показать его тип, распечатать его:

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']

регулярное выражение " [a-m]+" означает строчные буквы 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

если это всегда будет четное разделение LHS/RHS, вы также можете использовать partition метод, встроенный в строки. Он возвращает 3-кой как (LHS, separator, RHS) Если разделитель найден, и (original_string, '', '') Если разделитель отсутствует:

>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')

>>> "shazam".partition("_")
('shazam', '', '')