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

如何使用python检查列表中的项是否存在于其他列表中?,python,Python,例如,我有一个包含这些行的文本文件 [:];@;;]wqwww actualnumber 1234 ;;:@## aaaa ''3# allnumber 9876 ///qqq |||))) ]][]: best 56 我想获取值1234,9876,56。这样(期望输出) 我尝试了以下脚本,但它没有打印出任何内容 with open("test.txt", "r") as f: lines = f.readlines() stripped_lines = [line.strip

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

[:];@;;]wqwww actualnumber 1234 ;;:@##
aaaa ''3# allnumber 9876
///qqq |||)))
]][]: best 56
我想获取值
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

我错过了什么吗?

您可以使用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

您可以像这样提取数字:

k = '[:];@;;]wqwww actualnumber 1234 ;;:@##'
for item in k.split():
    if item.isnumeric():
        print(item)
你可以用条纹线代替。对于剥离行中的每一行,将其拆分,并检查拆分行中的任何项目是否为数字
isnumeric()
仅适用于unicode对象

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

words = ['actualnumber', 'allnumber', 'best']
found = {}
for line in stripped_lines:
    current_line = line.split()
    for position, item in enumerate(current_line):
        if item in words:
            found[item] = current_line[position + 1]

现在您已经在字典中找到了它们,您可以通过以下方式访问它们:
found['actualnumber']
。并进行进一步处理,例如将它们存储在数据库中。

简单的方法是使用
isdigit()

输出:

[1234, 9876, 56]

最后,您可以迭代列表并找出您的期望值。

如果数字为负怎么办
“-1”.isdigit()
返回
False
@Liliane您可以使用lsstrip(“-”)。在这种情况下,您真的想通过字符串中的关键字搜索数字,还是只想获取字符串中的任何数字?我真的想获取特定位置的数字。因此,我想要
9876
而不是
3
。如果你能在文本文件中看到,基本上我想得到某个关键字后面的数字hi@Ling可能有助于找到相同的值,match_values=[I for item in stripped_line for I in word If item in I]for value in match_values:print(value)@Ling我已经编辑了我的答案。假设这个数字总是紧跟在关键字后面。这很好,但我想得到每个值,而不是列表。我的意思是,例如,
aa
将打印
1234
bb
将打印
9876
cc
将打印
56
。这样,我就可以在其他计算机上使用
aa
的值,即
1234
operation@Ling您必须将它们存储在变量aa、bb、cc中吗?或者字典合适吗?例如
{'allnumber':9876}
。我想把这些值存储在数据库中,这就是为什么我想把它们放在变量中。你同意这个输出吗@凌:)是的,这就是我想做的。谢谢你的帮助
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):