2014-11-21 156 views
-1

我正在尝试搜索匹配字符串列表。正在搜索匹配的字符串

这是我的字符串列表:

ignore = ['40015','8002'] 

,我使用下面寻找一个匹配

if any(evtsummary in s for s in ignore): 

如果evtsummary = “东西8002” 它匹配

如果evtsummary =“something8002”它不匹配

我希望它在两种情况下匹配秒。

+1

你错过了你告诉我们你想要发生的事情与实际发生的事情相比较的部分。因为对我来说,它看起来像是正常工作。 – jgritty 2014-11-21 20:36:45

+1

这两者都不匹配,因为你正在寻找一个小字符串中的整个“evtsummary”字符串。 – khelwood 2014-11-21 20:38:28

+0

我只是想让结果成真。 – 2014-11-21 20:38:37

回答

0

它看起来像你的意思是:

if any(s in evtsummary for s in ignore): 
    ... 

这意味着,不evtsummary包含在ignore列表中的任何项目?

+0

This Works!感谢你的帮助,你能分享你的字符串和我有什么区别? – 2014-11-21 20:44:25

+0

这就是你所说的“做什么”包含'evtsummary'“,而”evtsummary'包含's'“这就是你说你想要的。 – khelwood 2014-11-21 20:45:44

+0

感谢您的澄清。我喜欢你,但看起来我还没有足够的代表。 – 2014-11-21 20:49:09

1

假设evtsummary是你说的字符串,你想要匹配something 8002而不是something8002

所以只是分裂evtsummary然后检查:

if any(s in evtsummary.split() for s in ignore): 
+0

对不起,我感到困惑。我试图匹配“8002”字符串“something8002,但它不起作用,但它会匹配”8002“ – 2014-11-21 20:43:12

+1

是我的翻译颠倒? – Kasramvd 2014-11-21 20:44:40

0

由于目前尚不清楚你真正想要的东西。这里有三种不同的尝试,每种都是针对三种不同的字符串进行测试。

ignore = ['40015','8002'] 

for evtsummary in ["something 8002", "something8002", "8002"]: 
    print "trying with {}".format(evtsummary) 
    if any(evtsummary in s for s in ignore): 
     print "first" 

    if any(s in evtsummary for s in ignore): 
     print "second" 

    if any(s in evtsummary.split() for s in ignore): 
     print "third" 
    print 

看来你想要第二个选项,但原来的问题听起来更像你想要的第三个。

+0

我的错误,我正在寻找像你这样的第二个选项指出。 – 2014-11-21 21:28:14

相关问题