¿Cómo puedo utilizar la función startswith para que coincida con cualquier carácter alfa [a-zA-Z]. Por ejemplo, me gustaría hacer esto:Python: startswith any alpha character
if line.startswith(ALPHA):
Do Something
¿Cómo puedo utilizar la función startswith para que coincida con cualquier carácter alfa [a-zA-Z]. Por ejemplo, me gustaría hacer esto:Python: startswith any alpha character
if line.startswith(ALPHA):
Do Something
Si desea hacer coincidir las letras no ASCII, así, que puede hacer:
if line and line[0].isalpha():
Una solución fácil sería utilizar el módulo de python regex:
import re
if re.match("^[a-zA-Z]+.*", line):
Do Something
-1: Uso de expresiones regulares es masivamente overkil l para esta tarea. Además, solo necesita verificar el primer carácter: esta expresión regular intentará hacer coincidir toda la cadena, lo que podría ser muy largo. –
Incluso si se vio obligado a usar el módulo re, todo lo que necesitaba era '[a-zA-Z]'. El '^' es un desperdicio de una pulsación de tecla (lea la sección de documentos sobre la diferencia entre 'búsqueda' y' coincidencia'). El '+' es una pequeña pérdida de tiempo (importante si la cadena tiene muchas letras al inicio); una letra es suficiente El '. *' Es una pérdida de 2 pulsaciones de teclas y posiblemente mucho más tiempo. –
puede pasar una tupla a startswiths()
(en Python 2.5 +) para que coincida cualquiera de sus elementos:
import string
ALPHA = string.ascii_letters
if line.startswith(tuple(ALPHA)):
pass
por supuesto, en este caso simple, una prueba de expresión regular o el operador in
sería más fácil de leer.
No lo sabía. +1 no es la mejor respuesta para esta pregunta, sino porque es, de lejos, la mejor respuesta para una tonelada de mi propio código. Gracias. – DaveTheScientist
Este es probablemente el método más eficiente:
if line != "" and line[0].isalpha():
...
+1, esta es la mejor solución, especialmente si está envuelta en una función o incluso en un método de alguna clase de validación. –
¿Por qué crees que esto es mejor que 'if line and line [0] .isalpha():'? –
si no se preocupan por espacios en blanco delante de la cadena,
if line and line.lstrip()[0].isalpha():
if line.startswith((chr(x) for x in range(ord('a'), ord('z')+1)+range(ord('A'), ord('Z')+1)):
# do processsing
pass
+1, Esta es la mejor solución, especialmente si está envuelta en una función o incluso en un método de alguna clase de validación. –
por supuesto, la línea debe ser un objeto unicode para que funcione la parte no Ascii. – u0b34a0f6ae
Aún más corto: 'if línea [: 1] .isalpha():' –