如何使用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):