的最后一个字符串我有这种类型的列表:Python列表:删除子表
lst = [u'cat 1234', u'dog bird 5678', u'fish horse elephant 9012']
我怎样才能删除每个字符串的最后一个字,有:
result = ['cat', 'dog bird', 'fish horse elephant']
编辑: “已经添加的‘u’,unicode的,我不知道,如果THRE是一个差异 编辑2:很抱歉的错误,它伤害了我的眼睛..
的最后一个字符串我有这种类型的列表:Python列表:删除子表
lst = [u'cat 1234', u'dog bird 5678', u'fish horse elephant 9012']
我怎样才能删除每个字符串的最后一个字,有:
result = ['cat', 'dog bird', 'fish horse elephant']
编辑: “已经添加的‘u’,unicode的,我不知道,如果THRE是一个差异 编辑2:很抱歉的错误,它伤害了我的眼睛..
试着这么做
>>> [' '.join(x.split()[:-1]) for x in lst]
['cat', 'dog bird', 'fish horse elephant']
但我还是不明白你为什么要list
要连接的元素。看起来它给你没有任何优势(考虑你之前的问题python dictionary and list: how to convert it?)。
Yeahhhh!此代码正在工作:)非常感谢!对不起,我奇怪的问题... – Guillaume
如果你想删除最后字从每个嵌套串,使用str.rpartition()
或str.rsplit()
:
result = [[val[0].rpartition(' ')[0]] for val in lst]
或
result = [[val[0].rsplit(None, 1)[0]] for val in lst]
后者可处理具有比只有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']]
如果你的字符串不嵌套列表,那么我们就不必拆开包装并重新包装;该[0]
索引可以去,以及创造新的嵌套表:
result = [val.rpartition(' ')[0] for val in lst]
或
result = [val.rsplit(None, 1)[0] for val in lst]
我的代码存在问题:>>> >>> = [u'Fare maohi 102152859',u'Clips 102890631',u'TNT 103216774',u'Via cultura“L \'Ochju,le Mauvais oeil”101959892'] >>> [[val] [0] .rpartition('')[0]] for val in 1st] result = [[ u''],[u''],[u''],[u'']] – Guillaume
@Guillaume:那是**不是**嵌套列表的列表! –
@Guillaume:你为什么问一个关于不同数据结构的问题?对于该结构,答案是[val.rpartition('')for val in lst]'。 –
您可以在空格分割字符串,它给你的单词列表:
>>> s = 'fish horse elephant 9012'
>>> words = s.split()
>>> words
['fish', 'horse', 'elephant', '9012']
你可以索引列表,用切片给除了最后一个项目的一切:
>>> all_but_last = words[:-1]
>>> all_but_last
['fish', 'horse', 'elephant']
然后,您可以用空格分隔加入列表一起回来:
>>> ' '.join(all_but_last)
'fish horse elephant'
所以,你需要做的日是在你的句子的列表中的每个句子:
>>> [[' '.join(sentence.split()[:-1])] for sentence[0] in sentences]
[['cat'], ['dog bird'], ['fish horse elephant']]
使用'str.rpartition()'或'str.rsplit()'意味着你不必拆分*所有*,然后重新加入。我所有的代码都会在最后一个空格中分割,并返回没有最后一个单词的部分。 –
每个子列表的最后一个元素是*整个字符串* ... –
这是一个非常简单的答案,只需要你遍历列表,切片串。你要求别人浪费时间来解释它是很荒谬的。 –
是的,你是对的...我会重写我的问题! – Guillaume