una - string en python
¿Cómo puedo verificar si una cadena solo contiene letras en Python? (9)
Estoy tratando de verificar si una cadena solo contiene letras, no dígitos o símbolos.
Por ejemplo:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
(1) Use str.isalpha () cuando imprima la cadena.
(2) Por favor, consulte el programa a continuación para su referencia: -
str = "this"; # No space & digit in this string
print str.isalpha() # it gives return True
str = "this is 2";
print str.isalpha() # it gives return False
Nota: - Marqué el ejemplo anterior en Ubuntu.
En realidad, ahora estamos en el mundo globalizado del siglo XXI y las personas ya no se comunican con ASCII, por lo que cuando se hace una pregunta sobre "solo letras", también se deben tener en cuenta las letras de alfabetos que no sean ASCII. Python tiene una biblioteca unicodedata muy buena que, entre otras cosas, permite la categorización de caracteres Unicode:
unicodedata.category(''陳'')
''Lo''
unicodedata.category(''A'')
''Lu''
unicodedata.category(''1'')
''Nd''
unicodedata.category(''a'')
''Ll''
Las categorías y sus abreviaturas se definen en el estándar Unicode. Desde aquí puede fácilmente encontrar una función como esta:
def only_letters(s):
for c in s:
cat = unicodedata.category(c)
if cat not in (''Ll'',''Lu'',''Lo''):
return False
return True
Y entonces:
only_letters(''Bzdrężyło'')
True
only_letters(''He7lo'')
False
Como puede ver, las categorías incluidas en la lista blanca pueden controlarse fácilmente mediante la tupla dentro de la función. Vea este artículo para una discusión más detallada.
La función str.isalpha()
funciona. es decir.
if my_string.isalpha():
print(''it is letters'')
La función string.isalpha()
funcionará para usted.
Para las personas que encuentren esta pregunta a través de Google y quieran saber si una cadena contiene solo un subconjunto de todas las letras, recomiendo usar expresiones regulares:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
Parece que la gente dice que use str.isalpha
.
Esta es la función de una línea para verificar si todos los caracteres son letras.
def only_letters(string):
return all(letter.isalpha() for letter in string)
all
acepta un iterable de booleanos, y devuelve True
iff todos los booleanos son True
.
De manera más general, all
regresa True
si los objetos en su iterable se considerarán True
. Estos se considerarían False
- 0
-
None
- Estructuras de datos vacías (es decir:
len(list) == 0
) -
False
(duh)
Sencillo:
if string.isalpha():
print("It''s all letters")
str.isalpha()
solo es verdadero si todos los caracteres en la cadena son letras:
Devuelve verdadero si todos los caracteres de la cadena son alfabéticos y hay al menos un carácter, de lo contrario será falso.
Manifestación:
>>> ''hello''.isalpha()
True
>>> ''42hello''.isalpha()
False
>>> ''hel lo''.isalpha()
False
Una solución bastante simple que se me ocurrió: (Python 3)
def only_letters(tested_string):
for letter in tested_string:
if not letter in "abcdefghjklmnopqrstuvwxyz":
return False
return True
Puede agregar un espacio en la cadena que está controlando si desea que se permitan espacios.
func only_letters(str):
return not any(str.isdigit(c) for c in str)