我有一个salt模块,它返回以下输出(我将所有这些存储到列表中以使迭代更容易):
- 2015-05-21 19:25:08,060 [main] WARN [::::::] c.p.core.FilteringPropertyPlaceholderConfigurer - Could not load properties from class path resource [proferi-component-test.properties]: class path resource [proferi-component-test.properties] cannot be opened because it does not exist
- 2015-05-21 19:25:08,064 [main] WARN [::::::] c.p.core.FilteringPropertyPlaceholderConfigurer - Could not load properties from class path resource [qe-prop-not-specified]: class path resource [qe-prop-not-specified] cannot be opened because it does not exist
- 2015-05-21 19:25:13,290 [main] INFO [::::::] c.p.a.m.persistence.modular.ModelSessionManager - Setup SessionManager modelSessionFactory
- 2015-05-21 19:25:14,327 [main] INFO [::::::] c.p.a.model.persistence.BlueprintsGraphReadSession - Loading model graph for application M-00000304-0000-0001-0000-000000000000 with version MV-0000000000002714-0000000000002695-true
- 2015-05-21 19:25:14,658 [main] INFO [::::::] c.p.a.m.p.hydration.AppModelGraphHydrator - AppModelGraph Hydration stats for app M-00000304-0000-0001-0000-000000000000 - total time:322ms | sql time:20ms | jackson mapping:32ms | vertex adding:6ms | core building:63ms | core population:15ms | proxying:84ms | invocation handler creation:80ms | interface list building:10ms | moving through result set:4ms | items processed:156
- 2015-05-21 19:25:14,860 [main] INFO [-:sales02:Session:SetPasswd:-:-:-] c.l.n.cluster.zookeeper.ZooKeeperClusterClient - Starting ClusterClient...
- 2015-05-21 19:25:14,914 [main] INFO [-:sales02:Session:SetPasswd:-:-:-] c.l.n.cluster.zookeeper.ZooKeeperClusterClient - Cluster started
- 2015-05-21 19:25:14,915 [main] INFO [-:sales02:Session:SetPasswd:-:-:-] com.proferi.core.NorbertProtobufServiceClient - Constructing NettyNetworkClient with close channel time -1 ms, max cnxns per node 10, stale request timeout 20 minutes, stale request purge frequency 2 minutes
- 2015-05-21 19:25:14,961 [Thread-8] INFO [-:sales02:Session:SetPasswd:-:-:-] c.l.n.c.zookeeper.ZooKeeperClusterManagerComponent - Connected to ZooKeeper
- 2015-05-21 19:25:14,987 [Thread-8] INFO [-:sales02:Session:SetPasswd:-:-:-] c.l.n.c.zookeeper.ZooKeeperClusterManagerComponent - Handling a Connected message
- 2015-05-21 19:25:15,245 [main] INFO [-:sales02:Session:SetPasswd:-:-:-] com.company.platform.cli.SetPassword - Password for email address john@tech.com for tenant sales02 was set
- 2015-05-21 19:25:15,254 [main] INFO [-:-:-:-:-:-:-] c.l.norbert.network.netty.NettyNetworkClient - Shutting down NetworkClient
- 2015-05-21 19:25:15,273 [main] INFO [-:-:-:-:-:-:-] c.l.norbert.network.netty.NettyNetworkClient - NetworkClient shut down
- 2015-05-21 19:25:15,281 [main] INFO [-:-:-:-:-:-:-] c.l.n.cluster.zookeeper.ZooKeeperClusterClient - Cluster shut down
Run Code Online (Sandbox Code Playgroud)
从这个返回我想检查块是否有字符串
- 2015-05-21 19:05:18,108 [main] INFO [-:sales02:Session:SetPasswd:-:-:-] com.company.platform.cli.SetPassword - Password for email address john@tech.com for tenant sales02 was set
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
我尝试使用for循环 -
for i in l:
if s == i: # where s is the string above
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
但这个dint工作(返回False).我尝试使用正则表达式,但字符串太复杂,我不能提出一个正则表达式公式.任何帮助将不胜感激.
由于这是一个列表,我知道我可以使用索引来获取所需的字符串,但我不想要字符串,我想在那里检查它然后返回一个自定义字符串给用户.
一种更简单的方法是使用类似的东西:
if s in l:
return True
Run Code Online (Sandbox Code Playgroud)
不需要像这样的简单检查的for循环,它将迭代列表并返回正数(或任何你想要返回的)如果它匹配匹配.它也是一种在python脚本中为CLI级菜单构建一些健壮性的方法.
提示:您可能希望将要检查的字符串列表更改为一组.运行速度稍快.
编辑:更好的方法:
return s in l
Run Code Online (Sandbox Code Playgroud)
如果你已经开始使用for循环 -
for i in l:
if any(i == s for i in entry)
return True
Run Code Online (Sandbox Code Playgroud)
虽然这可能是一个不太优雅的解决方案,但是使用any()确实允许你比上面的简单理解有一些更软的匹配 - 然而,这是有风险的,因为如果列表中的字符串至少具有匹配条件字符串,则以及更多信息,它也将返回真实.