language - regex python español
¿Cómo compruebo si una cadena solo contiene caracteres alfanuméricos y guiones? (4)
La cadena que estoy probando puede coincidir con [/w-]+
. ¿Puedo probar si una cadena se ajusta a esto en Python, en lugar de tener una lista de los caracteres no permitidos y probar eso?
Para probar si la cadena contiene solo caracteres alfanuméricos y guiones, usaría
import re
found_s = re.findall(''^[/w-]+$'', s)
valid = bool(found_s) and found_s[0] == s
Python también tiene expresiones regulares:
import re
if re.match(''^[/w-]+$'', s):
...
O puedes crear una lista de caracteres permitidos :
from string import ascii_letters
if all(c in ascii_letters+''-'' for c in s):
...
Si desea probar una cadena con una expresión regular, use la biblioteca re
import re
valid = re.match(''^[/w-]+$'', str) is not None
Sin importar ningún módulo simplemente usando python puro, elimine cualquier alfa, numérico excepto guiones.
string = ''#Remove-*crap?-from-this-STRING-123$%''
filter_char = lambda char: char.isalnum() or char == ''-''
filter(filter_char, string)
# This returns--> ''Remove-crap-from-this-STRING-123''
O en una línea:
''''.join([c for c in string if c.isalnum() or c in [''-'']])