45

删除字符串的第一个单词的最快/最干净的方法是什么?我知道我可以使用split然后迭代数组来获取我的字符串。但我很确定这不是最好的方法。

Ps:我对python很陌生,我不知道每一个技巧。

在此先感谢您的帮助。

4

4 回答 4

103

我认为最好的方法是拆分,但通过提供maxsplit参数将其限制为仅一个拆分:

>>> s = 'word1 word2 word3'
>>> s.split(' ', 1)
['word1', 'word2 word3']
>>> s.split(' ', 1)[1]
'word2 word3'
于 2012-10-14T14:59:41.253 回答
20

一个天真的解决方案是:

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”有多少个字?“中华人民共和国”呢?

于 2012-10-14T15:08:07.067 回答
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'
于 2012-10-14T15:08:00.127 回答
1

假设您可以保证单词由单个空格分隔,这str.partition()就是您要查找的内容。

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

元组中的第三项是您想要的部分。

于 2012-10-14T15:07:39.767 回答