在Python中,我想测试Linux命令输出中是否存在关键字。要测试的关键字将作为列表传递,如下所示。我并没有花太多时间在Python上,所以下面是暴力方法。有没有更干净的方法来写这个?在
def test_result (result, mykeys):
hit = 0
for keyword in mykeys:
if keyword in result:
hit = 1
print "found a match for " + keyword
if hit == 1:
return True
result = "grep says awk"
mykeys = ['sed', 'foo', 'awk']
result = test_result (result, mykeys)
您可以使用正则表达式来完成此操作。形式为}中的任何一个。所以,你需要一些形式上的东西:
a|b|c
的正则表达式匹配a
、b
或{p.search(result)
在整个字符串中搜索正则表达式的匹配项;如果存在,则返回匹配项(true-y),否则返回None
(false-y)。将结果转换为bool
如果匹配,则返回{把这个放在一起:
^{pr2}$您还可以通过不预编译正则表达式使其更简洁;如果是一次性使用,则可以这样做:
有关参考,请阅读Python's ^{} library 。在
您的函数做两件事,打印和返回结果。你可以这样把他们分开:
test_result
将返回一个包含所有找到的键的列表,或者返回一个空列表。空列表是假的,因此您可以将其用于任何您想要的测试。打印结果只有在您确实想打印时才需要,否则您可以在其他函数中使用结果。在如果您只想检查是否存在,而不关心找到了哪个密钥,可以执行以下操作:
^{pr2}$如果您正在使用python3(正如您应该使用的那样),我相信这将是懒惰的,并且只对列表中需要的内容进行评估。在
请参见A more concise way to write this Python code,以获得最后一个函数的更简洁版本。在
内置的
any
就可以做到这一点。在相关问题 更多 >
编程相关推荐