2013-03-21 9 views
32

Vì vậy, tôi biết về islower và isupper, nhưng tôi dường như không thể tìm ra nếu bạn có thể kiểm tra xem nhân vật đó có phải là một bức thư không?Cách kiểm tra xem ký tự trong chuỗi có phải là một chữ cái không? Python

Example: 

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

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

có cách nào để chỉ hỏi xem đó có phải là ký tự ngoài làm .islower() hoặc .isupper()?

+0

Xin lưu ý rằng "ký tự từ" trong lập trình thường đề cập đến các chữ cái và số và dấu gạch dưới. Câu hỏi này thực sự hỏi về "chữ cái"; nếu bạn cần xem liệu một nhân vật có phải là một ký tự từ hay không, cách tốt nhất tôi đã tìm thấy là 'character.isalnum() hoặc ký tự ==" _ "'. – Variadicism

+0

Tôi biết nhưng tôi hỏi điều này như 3 năm trước khi tôi lần đầu tiên bắt đầu lập trình. Vui lòng chỉnh sửa nó. –

+0

Đủ công bằng. Tất cả chúng ta đã ở đó. Tôi sẽ yêu cầu chỉnh sửa. – Variadicism

Trả lời

62

Bạn có thể sử dụng isalpha(), xem các tài liệu tại http://docs.python.org/2/library/stdtypes.html

Một ví dụ:

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

xin vui lòng lưu ý, nó là như vậy tốt nó hoạt động cho các bảng chữ cái khác nhau là tốt: '>>> in [x.isalpha() cho x trong u'Español- 한국어 ']' cung cấp cho bạn [True, True, True, True , True, True, True, False, True, True, True] như mong đợi – pryma

8
str.isalpha() 

Return đúng nếu tất cả các ký tự trong chuỗi là chữ cái và có ít nhất một ký tự, sai sự thật nếu không thì. Ký tự chữ cái là những ký tự được xác định trong cơ sở dữ liệu ký tự Unicode là "Thư", tức là những thuộc tính danh mục chung là "Lm", "Lt", "Lu", "Ll" hoặc "Lo". Lưu ý rằng điều này khác với thuộc tính "Chữ cái" được xác định trong Tiêu chuẩn Unicode.

Trong 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 
>>> 

Trong python3.x:

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

việc mã này:

>>> 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

mã này hoạt động:

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

sử dụng là thay vì ==, nếu a là false –

+0

okay cảm ơn bạn @Legolas Bloom – omry