Python多条件IN字符串

时间:2015-06-12 08:01:33

标签: python

如何以数组格式合并条件

lines = [line for line in open('text.txt')if 
        '|E|' in line and
        'GetPastPaymentInfo' in line and
        'CheckData' not in line and
        'UpdatePrintStatus' not in line
        ]

喜欢

lines = [line for line in open('text.txt')if 
        ['|E|','GetPastPaymentInfo'] in line and
        ['CheckData','UpdatePrintStatus'] not in line]

1 个答案:

答案 0 :(得分:8)

您可以使用generator expression函数中的all来检查所有元素的成员资格:

lines = [line for line in open('text.txt') if 
        all(i in line for i in ['|E|','GetPastPaymentInfo'])and
        all(j not in line for j in ['CheckData','UpdatePrintStatus'])]

或者,如果您想检查单词,可以拆分行并使用set 1 中的intersection方法:

lines = [line for line in open('text.txt') if 
        {'|E|','GetPastPaymentInfo'}.intersection(line.split()) and not {'CheckData','UpdatePrintStatus'}.intersection(line.split())]

请注意,您需要将单词放在set而不是列表中。

<子> 1)请注意,由于set对象使用 hash-table 来存储其元素以及返回项目,因此检查成员资格具有O(1)顺序并且它是&#39;比具有O(N)次序的list更有效。