如何在列表中附加多个字符串值(如果存在于列表中)

How to append multiple string values (if exist in a list) in a list

我有一个列表 'lst1' 并且想在一行中附加多个值(如果存在)。谁能帮我解决这个问题。

lst1 = [['cnl','fb123','ins54'],['ins45'],['abc','xyz'],['abc','xyz','fb765','ins567']]
adn = ['ab','cc']

fb = []
ins = []
otr = []

for lnk in lst1:
    for lnk2 in lnk:
        if 'fb' in lnk2:
            try:
                fb.append(lnk2)
            except:
                fb.append("")
        elif 'ins' in lnk2:
            try:
                ins.append(lnk2)
            except:
                ins.append("")
        elif ('fb' or 'ins') not in lnk2:
            try:
                otr.append(lnk2)
            except:
                otr.append("")

data = {}
data = {'fb': fb, 'ins': ins, 'otr': otr, 'adn': adn}

result = pd.DataFrame(dict([(k,pd.Series(v)) for k,v in data.items()])) 
result.to_csv("raw_data.csv", index = False)

预期输出:

    fb      ins     otr       adn
0   fb123   ins54   cnl       ab
1           ins45             cc
2                   abc,xyz 
3   fb765   ins567  abc,xyz 

甚至,我尝试使用 'extend' 函数,但无法获得所需的输出。

我不明白为什么在输出示例中第三行和第四行是空的?为什么 'abc, xyz' 在第二行?

仅根据描述实施。如果你想排除重复,你可以另外转换 *_check 列表来设置 .

import pandas as pd

lst1 = [['cnl', 'fb123', 'ins54'], ['ins45'], ['abc', 'xyz'], ['abc', 'xyz', 'fb765', 'ins567']]
adn = ['ab', 'cc']

fb = []
ins = []
otr = []

for lnk in lst1:
    fb_check = [word for word in lnk if word.startswith('fb')]
    ins_check = [word for word in lnk if word.startswith('ins')]
    otr_check = [word for word in lnk if not word.startswith('fb') and not word.startswith('ins')]

    fb.append(','.join(fb_check) if fb_check else '')
    ins.append(','.join(ins_check) if ins_check else '')
    otr.append(','.join(otr_check) if otr_check else '')

while len(adn) != len(fb):
    adn.append('')

data = {'fb': fb, 'ins': ins, 'otr': otr, 'adn': adn}


result = pd.DataFrame(dict([(k, pd.Series(v)) for k, v in data.items()]))
print(result)
result.to_csv("raw_data.csv", index=False)

输出:

      fb     ins      otr  adn
0  fb123   ins54      cnl   ab
1          ins45            cc
2                 abc,xyz  
3  fb765  ins567  abc,xyz