的最後一個字符串我有這種類型的列表: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