Biki
Biki

Reputation: 73

How to extract a string contained in nested list?

Please help me out to extract the string containing particular text. I have tried with below:

lst = [['abc', 'abgoodhj', 'rygbadkk'], ['jhjbadnm'], ['hjhj', 'iioytu'], ['hjjh', 'ghjgood1hj', 'jjkkbadgghhj', 'hjhgkll']]

for lst1 in lst:
    good_wrd = [txt for txt in lst1 if txt.contains('good')]
    bad_wrd = [txt for txt in lst1 if txt.contains('bad')]

I want the words that contain good and bad.

Upvotes: 1

Views: 406

Answers (3)

Vishal Singh
Vishal Singh

Reputation: 6234

use list comprehension to create a new list.

good_wrd = [
    word
    for sub_lst in lst
    for word in sub_lst
    if "good" in word
]
bad_wrd = [
    word
    for sub_lst in lst
    for word in sub_lst
    if "bad" in word
]

Alternatively using for loops:

good_wrd = []
bad_wrd = []

for sub_lst in lst:
    for word in sub_lst:
        if "bad" in word:
            bad_wrd.append(word)
        elif "good" in word:
            good_wrd.append(word)

Upvotes: 1

Omar AlSuwaidi
Omar AlSuwaidi

Reputation: 1394

target1 = 'good'
target2 = 'bad'
goods = []
bads = []
for lis in lst:
    for txt in lis:
        if target1 in txt:
            goods.append(txt)
        elif target2 in txt:
            bads.append(txt)

Upvotes: 0

Blackgaurd
Blackgaurd

Reputation: 658

This would work:

lst = [['abc', 'abgoodhj', 'rygbadkk'], ['jhjbadnm'], ['hjhj', 'iioytu'], ['hjjh', 'ghjgood1hj', 'jjkkbadgghhj', 'hjhgkll']]

good_wrd = []
bad_wrd = []
for lst1 in lst:
    good_wrd.extend([txt for txt in lst1 if 'good' in txt])
    bad_wrd.extend([txt for txt in lst1 if 'bad' in txt])

print(good_wrd)
print(bad_wrd)

Upvotes: 0

Related Questions