¿La cadena contiene algún carácter en grupo?

Tengo un conjunto de caracteres: \, /,?,% Etc. También tengo una cadena, digamos “¿Esta es mi cadena% mi cadena?”

Quiero comprobar si alguno de los caracteres está presente en la cadena.

Esto no es para verificar una subcadena, sino para buscar un carácter en un conjunto.

Yo podría hacer esto:

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

Pero es muy feo e ineficiente.

¿Hay alguna manera mejor?

Podrías usar any aquí.

 >>> 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 

Creo que Sukrit probablemente dio la respuesta más pythonica. Pero también puede resolver esto con operaciones de conjunto:

 >>> 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 
 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 indica que no hay caracteres en el conjunto que están presentes en la cadena de destino.

Utilice regex!

 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)