python list:删除子列表的最后一个字符串

Gui*_*ume 0 python list

我有这种类型的清单:

lst = [u'cat 1234', u'dog bird 5678', u'fish horse elephant 9012']
Run Code Online (Sandbox Code Playgroud)

如何删除每个字符串的最后一个单词,以便:

result = ['cat', 'dog bird', 'fish horse elephant']
Run Code Online (Sandbox Code Playgroud)

编辑:我添加了"你",unicode,我不知道是否有区别编辑2:对不起,它会伤害我的眼睛..

Mar*_*ers 5

如果要从每个嵌套字符串中删除最后一个单词,请使用str.rpartition()str.rsplit():

result = [[val[0].rpartition(' ')[0]] for val in lst]
Run Code Online (Sandbox Code Playgroud)

要么

result = [[val[0].rsplit(None, 1)[0]] for val in lst]
Run Code Online (Sandbox Code Playgroud)

后者可以处理以超过1个空格分隔的字符串.

演示:

>>> lst = [[u'cat 1234'], [u'dog bird 5678'], [u'fish horse elephant 9012']]
>>> [[val[0].rpartition(' ')[0]] for val in lst]
[[u'cat'], [u'dog bird'], [u'fish horse elephant']]
>>> [[val[0].rsplit(None, 1)[0]] for val in lst]
[[u'cat'], [u'dog bird'], [u'fish horse elephant']]
Run Code Online (Sandbox Code Playgroud)

如果你的字符串没有嵌套在列表中,那么我们就不必打开和重新包装; 该[0]索引可以去,以及创造新的嵌套表:

result = [val.rpartition(' ')[0] for val in lst]
Run Code Online (Sandbox Code Playgroud)

要么

result = [val.rsplit(None, 1)[0] for val in lst]
Run Code Online (Sandbox Code Playgroud)