首页 > 解决方案 > 如何检查一个元素是否在子列表中,然后打印子列表

问题描述

我的程序要求用户输入关键字,如下所示:

search = input("Enter data name: ").upper()

    with open('schedule.txt', 'r') as f:
        list_of_lists = []
        for line in f:
            stripped_line = line.strip()
            line_list = stripped_line.split(',')
            list_of_lists.append(line_list)
        print(list_of_lists)
        for lists in list_of_lists:
            if search in lists:
                output = lists
                print('The available flights are:', *output, sep='\n')
            else:
                print('No flights found')
        f.close()

如果关键字出现在子列表中,那么我的程序将打印该子列表(可以在多个子列表中找到,因此需要多个输出)。但是,我现在遇到的问题是,输出没有检查元素,它显示在一个长列表中,而不是在新行中分隔。

我的文本文件:

[1] MH371, MALAYSIAN AIRLINE, KUALA LUMPUR, BEIJING , 19-12-2021, N/A
[2] SX849, AIRASIA          , KUALA LUMPUR, BANGKOK , 05-01-2022, N/A
[3] MH234, MALAYSIAN AIRLINE, KUALA LUMPUR, LANGKAWI, 03-02-2022, N/A
[4] FD709, KOREA AIRLINE    , KUALA LUMPUR, SEOUL   , 29-12-2021, N/A
[5] Z1314, CATHAY AIRLINE   , KUALA LUMPUR, TOKYO   , 21-01-2022, N/A
[6] HY520, EMIRATES         , KUALA LUMPUR, TAIPEI  , 15-11-2021, N/A
[7] TT879, MALINDO AIR      , KUALA LUMPUR, HAWAII  , 08-02-2022, N/A

我的输出:

Enter data name: bangkok
[['[1] MH371', ' MALAYSIAN AIRLINE', ' KUALA LUMPUR', ' BEIJING ', ' 19-12-2021', ' N/A'], ['[2] SX849', ' AIRASIA          ', ' KUALA LUMPUR', ' BANGKOK ', ' 05-01-2022', ' N/A'], ['[3] MH234', ' MALAYSIAN AIRLINE', ' KUALA LUMPUR', ' LANGKAWI', ' 03-02-2022', ' N/A'], ['[4] FD709', ' KOREA AIRLINE    ', ' KUALA LUMPUR', ' SEOUL   ', ' 29-12-2021', ' N/A'], ['[5] Z1314', ' CATHAY AIRLINE   ', ' KUALA LUMPUR', ' TOKYO   ', ' 21-01-2022', ' N/A'], ['[6] HY520', ' EMIRATES         ', ' KUALA LUMPUR', ' TAIPEI  ', ' 15-11-2021', ' N/A'], ['[7] TT879', ' MALINDO AIR      ', ' KUALA LUMPUR', ' HAWAII  ', ' 08-02-2022', ' N/A']]

如您所见,它打印整个列表,而不仅仅是元素所在的子列表

标签: pythonlistsublist

解决方案


您可以查看单词是否在行中,然后将其转换为列表并输出:

search = input("Enter data name: ").upper()

with open('filename.csv') as input_file:
    for line in input_file:
        sublist = list(map(str.strip, line.split(',')))
        if search in sublist:
            print(sublist)

输出:

>>> Enter data name: bangkok
['[2] SX849', 'AIRASIA', 'KUALA LUMPUR', 'BANGKOK', '05-01-2022', 'N/A']

推荐阅读