¿Cómo comprobar una cadena en busca de caracteres específicos?

Resuelto The Woo asked hace 13 años • 9 respuestas

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

The Woo avatar Mar 04 '11 08:03 The Woo
Aceptado

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

dappawit avatar Mar 04 '2011 02:03 dappawit

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 inoperador 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
Abbafei avatar Mar 04 '2011 02:03 Abbafei

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"
ajwood avatar Mar 04 '2011 02:03 ajwood

¡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!
Eduardo Lucio avatar Dec 29 '2020 15:12 Eduardo Lucio