Python - 如果列表中的任何元素在行中
Python - If any element in list is in line
所以我这里有一些代码:
for line in FlyessInput:
if any(e in line for e in Fly):
FlyMatchedOutput.write(line)
elif line not in Fly:
FlyNotMatchedOutput.write(line)
else:
sys.exit("Error")
并且出于某种原因,他们没有输出列表 'Fly' 中匹配的行,而是只输出出现在 FlyessInput 文件中的行,而不是全部。它似乎没有一致的输出。
我想要的是将与'Fly'中的元素匹配的每一行输出到FlyMatchedOutput。我检查了输入文件和 'Fly' 列表,有些元素匹配,但它们似乎没有被发送到 MatchedOutput 文件。
谢谢,
尼克.
What I want is for each line which matches an element in 'Fly' to be outputted into FlyMatchedOutput.
我认为您的 elif 没有按照您认为的那样进行,但不知道您的测试输入我不能说这是否会导致问题。
这里对您的代码稍作改动,它似乎可以满足您的要求(虽然是打印而不是调用您的其他函数。
def testFlyCode(FlyessInput, Fly):
for line in FlyessInput:
if any(e in line for e in Fly):
print('FlyMatchedOutput', line)
else:
print('FlyNotMatchedOutput', line)
FlyessInput = [[1, 2, 3], [2, 3, 4]]
Fly = [1, 2]
testFlyCode(FlyessInput, Fly)
Fly = [1, 12]
testFlyCode(FlyessInput, Fly)
输出:
('FlyMatchedOutput', [1, 2, 3])
('FlyMatchedOutput', [2, 3, 4])
('FlyMatchedOutput', [1, 2, 3])
('FlyNotMatchedOutput', [2, 3, 4])
所以我这里有一些代码:
for line in FlyessInput:
if any(e in line for e in Fly):
FlyMatchedOutput.write(line)
elif line not in Fly:
FlyNotMatchedOutput.write(line)
else:
sys.exit("Error")
并且出于某种原因,他们没有输出列表 'Fly' 中匹配的行,而是只输出出现在 FlyessInput 文件中的行,而不是全部。它似乎没有一致的输出。
我想要的是将与'Fly'中的元素匹配的每一行输出到FlyMatchedOutput。我检查了输入文件和 'Fly' 列表,有些元素匹配,但它们似乎没有被发送到 MatchedOutput 文件。
谢谢, 尼克.
What I want is for each line which matches an element in 'Fly' to be outputted into FlyMatchedOutput.
我认为您的 elif 没有按照您认为的那样进行,但不知道您的测试输入我不能说这是否会导致问题。
这里对您的代码稍作改动,它似乎可以满足您的要求(虽然是打印而不是调用您的其他函数。
def testFlyCode(FlyessInput, Fly):
for line in FlyessInput:
if any(e in line for e in Fly):
print('FlyMatchedOutput', line)
else:
print('FlyNotMatchedOutput', line)
FlyessInput = [[1, 2, 3], [2, 3, 4]]
Fly = [1, 2]
testFlyCode(FlyessInput, Fly)
Fly = [1, 12]
testFlyCode(FlyessInput, Fly)
输出:
('FlyMatchedOutput', [1, 2, 3])
('FlyMatchedOutput', [2, 3, 4])
('FlyMatchedOutput', [1, 2, 3])
('FlyNotMatchedOutput', [2, 3, 4])