次のリストを1文字に分割したいとします。
mylist = [('dog', 'camel'), ('horse'), ('List_of_people_saved_by_Oskar'), 'mouse_bear', 'lion tiger rabbit', 'ant']
これは私がこれまでに試したことです:
L1 = [animal for word in mylist for animal in word.split('_')]
print(L1)
出力は次のようになります。
`['dog', 'camel', 'horse', 'List', 'of', 'people', 'saved', 'by', 'Oskar', 'mouse', 'bear', 'lion', 'tiger' 'rabbit', 'ant']`
しかし、エラーが発生しています。
AttributeError: 'tuple' object has no attribute 'split'
re.findall(r'[^_ ]+', word)
代わりに、アンダースコアまたはスペースで区切られた単語を分割するために使用できます。また、別の理解レイヤーを追加して、文字列の可能なタプルを平坦化します。
import re
L1 = [animal for item in mylist for word in (item if isinstance(item, (tuple, list)) else (item,)) for animal in re.findall(r'[^_ ]+', word)]
L1
になります:
['dog', 'camel', 'horse', 'List', 'of', 'people', 'saved', 'by', 'Oskar', 'mouse', 'bear', 'lion', 'tiger', 'rabbit', 'ant']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加