Как разбить строку в Python? - PullRequest
       11

Как разбить строку в Python?

6 голосов
/ 03 декабря 2009

Я прочитал документацию, но не до конца понимаю, как это сделать.

Я понимаю, что мне нужно иметь какой-то идентификатор в строке, чтобы функции могли найти, где разбить строку (если я не могу указать первый пробел в предложении?).

Так, например, как бы я разделить: "Sico87 is an awful python developer" до "Sico87" и "is an awful Python developer"?

Строки извлекаются из базы данных (если это имеет значение).

Ответы [ 2 ]

19 голосов
/ 03 декабря 2009

Используйте метод split для строк:

>>> "Sico87 is an awful python developer".split(' ', 1)
['Sico87', 'is an awful python developer']

Как это работает:

  1. Каждая строка является объектом. Для строковых объектов определены определенные методы, такие как split в данном случае. Вы звоните им, используя obj.<methodname>(<arguments>).
  2. Первый аргумент split - это символ, который разделяет отдельные подстроки. В данном случае это пробел, ' '.
  3. Второй аргумент - это количество раз, которое должно быть выполнено разбиение. В вашем случае это 1. Опуская этот второй аргумент, применяйте разбиение как можно чаще:

    >>> "Sico87 is an awful python developer".split(' ')
    ['Sico87', 'is', 'an', 'awful', 'python', 'developer']
    

Конечно, вы также можете хранить подстроки в отдельных переменных вместо списка:

>>> a, b = "Sico87 is an awful python developer".split(' ', 1)
>>> a
'Sico87'
>>> b
'is an awful python developer'

Но учтите, что это вызовет проблемы, если некоторые входные данные не содержат пробелов:

>>> a, b = "string_without_spaces".split(' ', 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
14 голосов
/ 03 декабря 2009

Используйте partition(' '), который всегда возвращает три элемента в кортеже - первый бит до разделителя, разделитель, а затем биты после. Слоты в кортеже, которые не применяются, все еще там, просто установите пустые строки.

Примеры: "Sico87 is an awful python developer".partition(' ') возвращает ["Sico87"," ","is an awful python developer"]

"Sico87 is an awful python developer".partition(' ')[0] возвращает "Sico87"

Альтернатива, хитрее способ заключается в использовании split(' ',1), который работает аналогично, но возвращает переменную Количество предметов. Он вернет кортеж из одного или двух элементов, первый из которых будет первым словом вплоть до разделителя, а второй - остальной частью строки (если есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...