¿Cómo comprobar una cadena para caracteres específicos?

¿Cómo puedo verificar si un valor de cadena tiene caracteres exactos usando Python2? Específicamente, estoy buscando detectar si tiene signos de dólar (“$”), comas (“,”) y números.

Suponiendo que su cadena es s :

 '$' in s # found '$' not in s # not found # original answer given, but less Pythonic than the above... s.find('$')==-1 # not found s.find('$')!=-1 # found 

Y así sucesivamente para otros personajes.

… o

 pattern = re.compile(r'\d\$,') if pattern.findall(s): print('Found') else print('Not found') 

… o

 chars = set('0123456789$,') if any((c in chars) for c in s): print('Found') else: print('Not Found') 

[Editar: agregó el '$' in s respuestas de '$' in s ]

El usuario Jochen Ritzel dijo esto en un comentario a una respuesta a esta pregunta del usuario dappawit. Deberia de funcionar:

 ('1' in var) and ('2' in var) and ('3' in var) ... 

‘1’, ‘2’, etc. deben reemplazarse con los caracteres que busca.

Consulte esta página en la documentación de Python 2.7 para obtener información sobre las cadenas, incluido el uso del operador in para las pruebas de subcadenas.

Actualización: Esto hace el mismo trabajo que mi sugerencia anterior con menos repetición:

 # When looking for single characters, this checks for any of the characters... # ...since strings are collections of characters any(i in '' for i in '123') # any(i in 'a' for i in '123') -> False # any(i in 'b3' for i in '123') -> True # And when looking for subsrings any(i in '' for i in ('11','22','33')) # any(i in 'hello' for i in ('18','36','613')) -> False # any(i in '613 mitzvahs' for i in ('18','36','613')) ->True 

Comparación rápida de los tiempos en respuesta a la publicación de Abbafei:

 import timeit def func1(): phrase = 'Lucky Dog' return any(i in 'LD' for i in phrase) def func2(): phrase = 'Lucky Dog' if ('L' in phrase) or ('D' in phrase): return True else: return False if __name__ == '__main__': func1_time = timeit.timeit(func1, number=100000) func2_time = timeit.timeit(func2, number=100000) print('Func1 Time: {0}\nFunc2 Time: {1}'.format(func1_time, func2_time)) 

Salida:

 Func1 Time: 0.0737484362111 Func2 Time: 0.0125144964371 

Así que el código es más compacto con cualquiera, pero más rápido con el condicional.

Esto probará si las cadenas están compuestas de una combinación o dígitos, el signo de dólar y una coma. ¿Es eso lo que estás buscando?

 importar re

 s1 = 'Cadena de prueba'
 s2 = '1234,12345 $'

 regex = re.compile ('[0-9, $] + $')

 if (regex.match (s1)):
    imprimir "s1 emparejado"
 más:
    imprimir "s1 no coincide"

 if (regex.match (s2)):
    imprimir "s2 emparejado"
 más:
    imprimir "s2 no coincide"
 s=input("Enter any character:") if s.isalnum(): print("Alpha Numeric Character") if s.isalpha(): print("Alphabet character") if s.islower(): print("Lower case alphabet character") else: print("Upper case alphabet character") else: print("it is a digit") elif s.isspace(): print("It is space character") 

más:
imprimir (“carácter especial no espacial”)