Ответ 1
Я думаю, что лучший способ - разделить, но ограничить его только одним разделом, указав параметр maxsplit
:
>>> s = 'word1 word2 word3'
>>> s.split(' ', 1)
['word1', 'word2 word3']
>>> s.split(' ', 1)[1]
'word2 word3'
Какой самый быстрый/самый чистый способ удалить первое слово строки? Я знаю, что могу использовать split
, а затем перебирать массив для получения строки. Но я уверен, что это не самый лучший способ сделать это.
Ps: Я совершенно новый для python, и я не знаю каждого трюка.
Заранее благодарим за помощь.
Я думаю, что лучший способ - разделить, но ограничить его только одним разделом, указав параметр maxsplit
:
>>> s = 'word1 word2 word3'
>>> s.split(' ', 1)
['word1', 'word2 word3']
>>> s.split(' ', 1)[1]
'word2 word3'
Наивное решение было бы:
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"? Как насчет "中华人民共和国"?
Другой ответ вызовет исключение, если ваша строка содержит только одно слово, которое, я полагаю, не то, что вы хотите.
Один из способов сделать это - использовать функцию 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'
Предполагая, что вы можете гарантировать, что слова разделены одним пробелом, str.partition()
- это то, что вы ищете.
>>> test = "word1 word2 word3"
>>> test.partition(" ")
('word1', ' ', 'word2 word3')
Третий элемент в кортеже - это часть, которую вы хотите.