Python - 如果列表中的任何元素排成一行

时间:2016-02-12 11:10:00

标签: python list file string-matching any

所以我在这里有一些代码:

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")

由于某种原因,它们不输出List' Fly'中匹配的行,而只输出FlyessInput文件中出现的行而不是所有行。它似乎没有一致的输出。

我想要的是每一行与“飞”中的元素相匹配的行。输出到FlyMatchedOutput。我检查了输入文件和“飞”' list和有些匹配的元素,但它们似乎没有被发送到MatchedOutput文件。

谢谢, 尼克。

1 个答案:

答案 0 :(得分:3)

  

我想要的是将每行匹配“Fly”中的元素输出到FlyMatchedOutput。

我不认为你的elif做你认为应该做的事情,但不知道你的测试输入我不能说是否会导致问题。

这是对你的代码的一个小改动似乎做你想要的(虽然是priting而不是调用你的其他功能。

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])