Подтвердить что ты не робот

Удалить первое слово в строке Python?

Какой самый быстрый/самый чистый способ удалить первое слово строки? Я знаю, что могу использовать split, а затем перебирать массив для получения строки. Но я уверен, что это не самый лучший способ сделать это.

Ps: Я совершенно новый для python, и я не знаю каждого трюка.

Заранее благодарим за помощь.

4b9b3361

Ответ 1

Я думаю, что лучший способ - разделить, но ограничить его только одним разделом, указав параметр maxsplit:

>>> s = 'word1 word2 word3'
>>> s.split(' ', 1)
['word1', 'word2 word3']
>>> s.split(' ', 1)[1]
'word2 word3'

Ответ 2

Наивное решение было бы:

text = "funny cheese shop"
print text.partition(' ')[2] # cheese shop

Однако это не будет работать в следующем (предположительно надуманном) примере:

text = "Hi,nice people"
print text.partition(' ')[2] # people

Чтобы справиться с этим, вам понадобятся регулярные выражения:

import re
print re.sub(r'^\W*\w+\W*', '', text)

В более общем плане, невозможно ответить на вопрос, связанный с "словом", не зная, о каком естественном языке мы говорим. Сколько слов "J'ai"? Как насчет "中华人民共和国"?

Ответ 3

Другой ответ вызовет исключение, если ваша строка содержит только одно слово, которое, я полагаю, не то, что вы хотите.

Один из способов сделать это - использовать функцию str.partition.

>>> s = "foo bar baz"
>>> first, _, rest = s.partition(" ")
>>> rest or first
'bar baz'

>>> s = "foo"
>>> first, _, rest = s.partition(" ")
>>> rest or first
'foo'

Ответ 4

Предполагая, что вы можете гарантировать, что слова разделены одним пробелом, str.partition() - это то, что вы ищете.

>>> test = "word1 word2 word3"
>>> test.partition(" ")
('word1', ' ', 'word2 word3')

Третий элемент в кортеже - это часть, которую вы хотите.