字符串包含组中的任何字符?

时间:2013-10-19 07:25:00

标签: python

我有一组字符:\,/,?,%等。 我也有一个字符串,让我们说“这是我的字符串%my string?”

我想检查字符串中是否存在任何字符。

这不是检查子字符串,而是检查集合中的字符。

我可以这样做:

my_str.find( "/" ) or my_str.find( "\\" ) or my_str.find( "?" )

但它非常丑陋且效率低下。

有更好的方法吗?

4 个答案:

答案 0 :(得分:11)

您可以在此处使用any

>>> string = r"/\?%"
>>> test = "This is my string % my string ?"
>>> any(elem in test for elem in string)
True
>>> test2 = "Just a test string"
>>> any(elem in test2 for elem in string)
False

答案 1 :(得分:4)

我认为Sukrit可能给出了最狡猾的答案。但您也可以通过设置操作解决此问题:

>>> test_characters = frozenset(r"/\?%")
>>> test = "This is my string % my string ?"
>>> bool(set(test) & test_characters)
True
>>> test2 = "Just a test string"
>>> bool(set(test2) & test_characters)
False

答案 2 :(得分:1)

In [1]: import re
In [2]: RE = re.compile('[\\\/\?%]')
In [3]: RE.search('abc')

In [4]: RE.search('abc?')
Out[4]: <_sre.SRE_Match at 0x1081bc1d0>
In [5]: RE.search('\\/asd')
Out[5]: <_sre.SRE_Match at 0x1081bc3d8>

None表示集合中的非字符存在于目标字符串中。

答案 3 :(得分:1)

使用正则表达式!

import re

def check_existence(text):
    return bool(re.search(r'[\\/?%]', text))

text1 = "This is my string % my string ?"
text2 = "This is my string my string"

print check_existence(text1)
print check_existence(text2)