如何用python检查列表中的项目是否存在于其他列表中?

2024-06-28 10:50:40 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有一个包含这些行的文本文件

[:];@;;]wqwww actualnumber 1234 ;;:@##
aaaa ''3# allnumber 9876
///qqq |||)))
]][]: best 56

我想得到值1234987656。像这样(期望输出)

1234
9876
56

我试着用下面的脚本,但它没有打印出任何东西

with open("test.txt", "r") as f:
    lines = f.readlines()
    stripped_lines = [line.strip() for line in lines]

    word = ["actual number", "potential", "time"]
    if any(item in stripped_lines for item in word):
        aa = stripped_lines.split("actualnumber ")[1].split(" ")[0]
        bb = stripped_lines.split("allnumber ")[1].split(" ")[1]
        cc = stripped_lines.split("best ")[1]

        print aa
        print bb
        print cc

我错过什么了吗?你知道吗


Tags: inforlineitemwordaaccsplit
3条回答

你可以用re模块

import re
with open('f.txt') as f:
    data = f.read()
    act = re.findall(r'actualnumber\s+(\d+)',data)
    best = re.findall(r'best\s(\d+)',data)
    allnumber = re.findall(r'allnumber\s(\d+)',data)
    print "actualnumber  : ", act[0] if act else None
    print "allnumber  : ", allnumber[0] if allnumber else None
    print "best  : ", best[0] if best else None

输出

actualnumber  :  1234
allnumber  :  9876
best  :  56

简单的方法是使用isdigit()

f = open('test.txt')
data = f.read()
[int(s) for s in data.split() if s.lstrip("-").isdigit()]

输出:

[1234, 9876, 56]
    word = ["actualnumber", "potential", "time"]
    with open("./abx.txt") as file:
         temp_list = [line.strip() for line in file.readlines()]
         list_val = [item for item in temp_list if any(x in item for x in word)]
         final_list = []
         match_value = ["actualnumber", "allnumber", "best"]
         if list_val:
           for val in temp_list:
             val_list = val.split(" ")
             for key, value in enumerate(val_list):
                 if value in match_value:
                    final_list.append(val_list[key+1])

        print(final_list):

最后,您可以迭代列表并找出期望值。你知道吗

相关问题 更多 >