45

What's the quickest/cleanest way to remove the first word of a string? I know I can use split and then iterate on the array to get my string. But I'm pretty sure it's not the nicest way to do it.

Ps: I'm quite new to python and I don't know every trick.

Thanks in advance for your help.

4

4 に答える 4

103

最善の方法は分割することだと思いますが、maxsplitパラメーターを指定して分割を 1 つだけに制限します。

>>> 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)

より一般的には、私たちが話している自然言語を知らずに「単語」に関する質問に答えることは不可能です。「ジャイ」は何語ですか?「中华人民共和国」はどうですか?

于 2012-10-14T15:08:07.067 に答える
3

他の答えは、文字列に1つの単語しかない場合に例外を発生させますが、これはあなたが望むものではないと私は推測します。

代わりにこれを行う1つの方法は、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')

タプルの3番目の項目は、必要な部分です。

于 2012-10-14T15:07:39.767 に答える