Próbuję sprawdzić, czy ciąg zawiera tylko litery, a nie cyfry lub symbole.Jak mogę sprawdzić, czy ciąg zawiera tylko litery w Pythonie?
Na przykład:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
Próbuję sprawdzić, czy ciąg zawiera tylko litery, a nie cyfry lub symbole.Jak mogę sprawdzić, czy ciąg zawiera tylko litery w Pythonie?
Na przykład:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
Funkcja str.isalpha()
działa. to znaczy.
if my_string.isalpha():
print('it is letters')
Proste:
if string.isalpha():
print("It's all letters")
str.isalpha()
jest prawda, jeśli wszystkie znaki napisu są literami:
return true jeśli wszystkie znaki w ciągu są alfabetyczne i nie ma co najmniej jeden znak, w przeciwnym wypadku false.
Demo:
>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
Funkcja string.isalpha()
będzie pracować dla Ciebie.
Zobacz http://www.tutorialspoint.com/python/string_isalpha.htm
Dla osób stwierdzających to pytanie za pośrednictwem Google, którzy chcą wiedzieć, czy ciąg zawiera tylko podzbiór wszystkich liter, polecam użyciu regexes:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
Przepraszam, że chodzę, ale regex w twoim przykładzie może być również '^ [A-HJ-M] * $', co jest moim zdaniem bardziej czytelne . – Petzku
A całkiem proste rozwiązanie ja wymyśliłem: (Python 3)
def only_letters(tested_string):
for letter in tested_string:
if not letter in "abcdefghjklmnopqrstuvwxyz":
return False
return True
Możesz dodać spację w ciągu, który sprawdzasz, jeśli chcesz, aby spacje były dozwolone.
jeśli litera * nie * w "abcdefghjklmnopqrstuvwxyz" – Guibod
Tęsknisz za I i nie używasz nieprawidłowo: 'jeśli litera ** nie ** w" abcdefgh ** i ** jklmnopqrstuvwxyz "' – Guibod
Prawdopodobnie chcesz używać 'if letter.lower() ...' Tak jak to jest, wielkie litery nie będą się liczyć. Moduł 'string' ma również zmienną predefiniowaną dla wszystkich liter w alfabecie. W rzeczywistości są trzy: dla wielkich, małych i obu. Oczywiście prostsze rozwiązanie jest już podane powyżej: 'isalpha'. – zondo
Wygląda na to, że ludzie mówią, że używają str.isalpha
.
Jest to funkcja jednolinijkowa do sprawdzania, czy wszystkie znaki są literami.
def only_letters(string):
return all(letter.isalpha() for letter in string)
all
akceptuje Iterable wartości logicznych i zwraca True
IFF wszystkich logicznych są True
.
Bardziej ogólnie, all
zwraca True
, jeśli obiekty w twojej iteracji będą uznane za True
. Byłyby one uważane False
None
len(list) == 0
)False
.(Duh)func only_letters(str):
return not any(str.isdigit(c) for c in str)
Istnieje wiele znaków, które nie są cyframi, a także nie są alfabetyczne, więc jest to bardzo niewiarygodne rozwiązanie. – zondo
Faktycznie, jesteśmy teraz w zglobalizowanym świecie 21. wieku i ludzie komunikują się nie tylko przy użyciu ASCII więc podczas odbierania połączeń pytanie o „zaledwie IT litery” trzeba brać pod uwagę liter również z alfabetów innych niż ASCII. Python ma dość chłodne unicodedata biblioteki, która między innymi umożliwia kategoryzację znaków Unicode:
unicodedata.category('陳')
'Lo'
unicodedata.category('A')
'Lu'
unicodedata.category('1')
'Nd'
unicodedata.category('a')
'Ll'
categories and their abbreviations są zdefiniowane w standardzie Unicode. Stąd można dość łatwo można wymyślić z funkcji takich jak to:
def only_letters(s):
for c in s:
cat = unicodedata.category(c)
if cat not in ('Ll','Lu','Lo'):
return False
return True
, a następnie:
only_letters('Bzdrężyło')
True
only_letters('He7lo')
False
Jak widać na białej liście kategorie mogą być łatwo kontrolowane przez krotki w kasecie funkcjonować. Zobacz this article, aby uzyskać bardziej szczegółową dyskusję.
(1) Użyj str.isalpha() podczas drukowania napisu.
(2) Proszę sprawdzić poniżej programu w celach informacyjnych: -
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
Uwaga: - Sprawdziłem powyżej przykład w Ubuntu.
Uwaga: W python2 nie jest to znane z unikodu, więc '" ä ".isalpha()' jest fałszywe. Jednak w python3 '" ä ".isalpha()' ma wartość True, ponieważ python3 ma defiulty łańcuchy unicode. – Squidly
@MrBones: W Pythonie 2 używaj obiektu 'unicode' jeśli to ma znaczenie. –
Tak, właśnie dodawałem go jako dodatkową użyteczną informację dla niczego nie podejrzewających czytelników. – Squidly