2016-11-04 5 views
0

pythonに新しくて、助けを求めています。出力['Lion', 'Tiger', 'Bear']を得るために"White""Blue" -文字列のリストを繰り返し、指定した文字の後にすべての文字を削除します

output = [] 

mylist = ['LionRed 1','TigerWhite 2','BearBlue 3'] 

for item in mylist: 
    tempitem = item.split("Red")[0] 
    output.append(tempitem) 

これの出力は、私が欲しいものですが、私は2つの以上の分割を追加したいどの['Lion', 'TigerWhite 2', 'BearBlue 3']です。

+0

大文字の文字が表示される前に、すべての文字列の最初の単語を取得することはほとんどありませんか?それで、あなたの弦がどのように見えるのか、それほどですか? – idjaw

+0

'Lion123Red 1'があればどうなりますか?結果はどうあるべきですか? – idjaw

+0

この例ではLion123が得られますが、これは問題ありません。 'Red'の後にすべてを削除しようとしています –

答えて

0

指定された文字が何を意味するかわからないので、色の単語に基づいてフィルタをかけたいと思っています。

>>> mylist = ['LionRed 1','TigerWhite 2','BearBlue 3'] 
>>> filter_list = ['Red', 'White', 'Blue'] 
>>> output = [item.split(filter_word)[0] for (item,filter_word) in zip(mylist,filter_list)] 
>>> output 
['Lion', 'Tiger', 'Bear'] 
+0

これは、あなたのフィルタリングされたリストをハードコードする必要がありますか? –

+0

これは私が探しているものだと思います。私はちょうどどの文字や単語(この場合は "赤"、 "白"、 "青")を特定し、それ以降の文字列をすべて削除したいと思っていました。検索する単語のリストを作成するだけでいいように見えます。病気はこれを撃つ。 –

+0

アダムの意味は「指定された文字」で分かりません。彼は、マイリストのパターンやフィルターの条件のように、彼の質問をより明確にする必要があります。 –

0

前提:あなたは、各リストのうちの最初の単語をしたい(私が間違っているなら、私を修正)

import re 
mylist = ['LionRed 1','TigerWhite 2','BearBlue 3'] 
output = [re.findall(r'.*(?=[A-Z])',a)[0] for a in mylist] 

OUTPUT:

['Lion', 'Tiger', 'Bear'] 
0

あなたは内蔵のstr.rsplitを使用することができますまたはquestionをチェックしてください。

関連する問題