Як я можу розділити та проаналізувати рядок у Python?


107

Я намагаюся розділити цей рядок на python: 2.7.0_bf4fda703454

Я хочу розділити цей рядок на підкреслення, _щоб я міг використовувати значення зліва.


Прочитайте partitionметод рядків, а потім оновіть своє запитання.
S.Lott

Відповіді:


141

"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(). Використання подібне до останнього прикладу, за винятком того, що воно повертає три компоненти замість двох. Основна перевага полягає в тому, що цей метод не виходить з ладу, якщо рядок не містить роздільника.


80

Покроковий аналіз синглу 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']

Регулярний вираз «[Я] +» означає , що малі літери 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

18

Якщо це завжди буде рівний LHS / RHS розкол, ви також можете використовувати partitionметод, вбудований у рядки. Він повертає 3-кортеж, (LHS, separator, RHS)ніби роздільник знайдений, і (original_string, '', '')якщо роздільника немає:

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

>>> "shazam".partition("_")
('shazam', '', '')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.