如何以数组格式合并条件
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]
答案 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
更有效。
子>