¿Cómo comprobar una cadena en busca de caracteres específicos?
¿Cómo puedo comprobar si una cadena tiene varios caracteres específicos usando Python 2?
Por ejemplo, dada la siguiente cadena:
Los delincuentes robaron 1.000.000 de dólares en joyas.
¿Cómo puedo 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 con 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ó las '$' in s
respuestas]
Así lo dijo el usuario Jochen Ritzel en un comentario sobre la 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 está buscando.
Consulte esta página en la documentación de Python 2.7 para obtener información sobre cadenas, incluido el uso del in
operador para 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 '<string>' 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 '<string>' 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
Esto probará si las cadenas están formadas por alguna combinación de 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$' expresión regular = re.compile('[0-9,$]+$') si (regex.match(s1)): imprimir "s1 coincidente" demás: imprime "s1 no coincide" si (regex.match(s2)): imprimir "s2 coincidente" demás: imprimir "s2 no coincide"
¡Mi enfoque simple, simple, simple! =D
Código
string_to_test = "The criminals stole $1,000,000 in jewels."
chars_to_check = ["$", ",", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
for char in chars_to_check:
if char in string_to_test:
print("Char \"" + char + "\" detected!")
Producción
Char "$" detected!
Char "," detected!
Char "0" detected!
Char "1" detected!