2013-03-21 13 views
32

Więc wiem o islower i isupper, ale nie mogę się dowiedzieć, czy możesz sprawdzić, czy ta postać jest literą czy nie?Jak sprawdzić, czy znak w łańcuchu jest literą? Python

Example: 

s = 'abcdefg' 
s2 = '123abcd' 
s3 = 'abcDEFG' 

s[0].islower() = True 
s2[0].islower()= False 
s3[0].islower()=True 

jest jakiś sposób, aby po prostu zapytać, czy jest to znak oprócz robi .islower() lub .isupper()?

+0

Należy pamiętać, że "słowo" w programowaniu zwykle odnosi się do liter i cyfr oraz znaków podkreślenia. To pytanie w rzeczywistości pyta o "listy"; jeśli chcesz sprawdzić, czy postać jest słowem, najlepszym sposobem, jaki znalazłem, jest 'character.isalnum() lub character ==" _ "'. – Variadicism

+0

Wiem, ale zapytałem o to jak 3 lata temu, kiedy zacząłem programowanie. Możesz go edytować. –

+0

Wystarczająco fair. Wszyscy tam byliśmy. Poproszę o zmianę. – Variadicism

Odpowiedz

62

Można użyć isalpha() patrz docs na http://docs.python.org/2/library/stdtypes.html

przykład:

>>> s = "a123b" 
>>> for char in s: 
...  print char, char.isalpha() 
... 
a True 
1 False 
2 False 
3 False 
b True 
+0

Proszę zauważyć, że jest tak dobry, że działa również dla różnych alfabetów: '>>> print [x.isalpha() dla x w u'Español- 한국어 ']' daje [True, True, True, True , True, True, True, False, True, True, True] zgodnie z oczekiwaniami – pryma

8
str.isalpha() 

return true jeśli wszystkie znaki w ciągu są alfabetyczne i istnieje co najmniej jeden znak, fałszywy Inaczej. Znaki alfabetu są to znaki zdefiniowane w bazie danych znaków Unicode jako "Letter", tj. Te z ogólną właściwością kategorii są jednym z "Lm", "Lt", "Lu", "Ll" lub "Lo". Zauważ, że różni się to od właściwości "Alfabetyczny" zdefiniowanej w standardzie Unicode.

W python2.x:

>>> s = u'a1中文' 
>>> for char in s: print char, char.isalpha() 
... 
a True 
1 False 
中 True 
文 True 
>>> s = 'a1中文' 
>>> for char in s: print char, char.isalpha() 
... 
a True 
1 False 
� False 
� False 
� False 
� False 
� False 
� False 
>>> 

W python3.x:

>>> s = 'a1中文' 
>>> for char in s: print(char, char.isalpha()) 
... 
a True 
1 False 
中 True 
文 True 
>>> 

Ta praca kod:

>>> def is_alpha(word): 
...  try: 
...   return word.encode('ascii').isalpha() 
...  except: 
...   return False 
... 
>>> is_alpha('中国') 
False 
>>> is_alpha(u'中国') 
False 
>>> 

>>> a = 'a' 
>>> b = 'a' 
>>> ord(a), ord(b) 
(65345, 97) 
>>> a.isalpha(), b.isalpha() 
(True, True) 
>>> is_alpha(a), is_alpha(b) 
(False, True) 
>>> 
-2

ten kod działa:

str=raw_input("enter a string:") 
    for char in word: 
     if not char.isalpha(): 
      sum=sum+1 
     if sum>0: 
      print char 
+0

użyj zamiast tego ==, jeśli a jest fałszywe –

+0

ok, dziękuję @Legolas Bloom – omry

Powiązane problemy