2013-09-06 11 views

ответ

11

str.isalpha() функция работает. то есть.

if my_string.isalpha(): 
    print('it is letters') 
54

Простой:

if string.isalpha(): 
    print("It's all letters") 

str.isalpha() только верно, если все символы в строке являются буквы:

Возвращенные верно, если все символы в строке являются алфавитными и есть по крайней мере, один символ, иначе false.

Демо:

>>> 'hello'.isalpha() 
True 
>>> '42hello'.isalpha() 
False 
>>> 'hel lo'.isalpha() 
False 
+10

Примечание: В python2 это не является символом unicode, поэтому '' ä ".isalpha()' False. Однако в python3 '' ä ".isalpha()' is True, потому что python3 имеет unicode-строки по умолчанию. – Squidly

+0

@MrBones: В Python 2 используйте объект 'unicode', если это имеет значение. –

+0

Да, я просто добавлял его в качестве дополнительной полезной информации для ничего не подозревающих читателей. – Squidly

6

Для людей, находящих на этот вопрос с помощью Google, которые хотят знать, если строка содержит только подмножество всех букв, я рекомендую использовать регулярные выражения:

import re 

def only_letters(tested_string): 
    match = re.match("^[ABCDEFGHJKLM]*$", tested_string) 
    return match is not None 
+5

Извините, что вы используете nitpicking, но регулярное выражение в вашем примере также может быть '^ [A-HJ-M] * $', что, на мой взгляд, более читаемо , – Petzku

-1

довольно простое решение, которое я придумал: (Python 3)

def only_letters(tested_string): 
     for letter in tested_string: 
      if not letter in "abcdefghjklmnopqrstuvwxyz": 
       return False 
     return True 

вы можете добавить пробел в строке, которую вы проверяете против, если вы хотите пространства будет разрешено.

+0

Если письмо * не * в "abcdefghjklmnopqrstuvwxyz" – Guibod

+0

Вам не хватает I, и я не использую его неправильно: 'if letter ** not ** in" abcdefgh ** i ** jklmnopqrstuvwxyz "' – Guibod

+0

Вы, вероятно, захотите использовать 'if letter.lower() ...' Как бы то ни было, буквы верхнего регистра не будут считаться. Модуль 'string' также имеет переменную, предопределенную всем буквам в алфавите. На самом деле их три: для прописных, строчных и двух. Конечно, более простое решение уже указано выше: 'isalpha'. – zondo

4

Похоже, что люди говорят, что используют str.isalpha.

Это функция одной строки, чтобы проверить, являются ли все символы буквами.

def only_letters(string): 
    return all(letter.isalpha() for letter in string) 

all принимает итератор из булевых, и возвращает True тогда и только тогда все булевы являются True.

В целом, all возвращает True, если объекты в вашем итерируемом состоянии считаются True. Они будут рассмотрены False

  • None
  • структуры Empty данных (то есть: len(list) == 0)
  • False.(Дух)
+0

это самое интересное решение, поскольку легко отменить помещение на основе каждого символа. – Alex

+1

'isalpha' уже проверяет каждую букву. Нет необходимости использовать его более одного раза. – zondo

0
func only_letters(str): 
    return not any(str.isdigit(c) for c in str) 
+0

Есть много символов, которые не являются цифрами, а также не являются алфавитами, поэтому это очень ненадежное решение. – zondo

3

На самом деле, мы сейчас в глобализованном мире 21-го века и люди больше не общаются с помощью ASCII только поэтому при конечной точки и нажмите вопрос «только это буквы» Вы должны принять во внимание письма из не-ASCII-алфавитов. Python имеет довольно прохладное unicodedata библиотека, которая среди прочего позволяет категоризации символов Unicode:

unicodedata.category('陳') 
'Lo' 

unicodedata.category('A') 
'Lu' 

unicodedata.category('1') 
'Nd' 

unicodedata.category('a') 
'Ll' 

categories and their abbreviations определены в стандарте Unicode. Отсюда вы можете довольно легко можно придумать функцию:

def only_letters(s): 
    for c in s: 
     cat = unicodedata.category(c) 
     if cat not in ('Ll','Lu','Lo'): 
      return False 
    return True 

А потом:

only_letters('Bzdrężyło') 
True 

only_letters('He7lo') 
False 

Как вы можете увидеть белый список категорий может быть довольно легко контролируется кортеже внутри функция. См. this article для более подробного обсуждения.

0

(1) Используйте str.isalpha(), когда вы печатаете строку.

(2) Пожалуйста, проверьте ниже программы для справки: -

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 

Примечание: - Я проверил выше, например, в Ubuntu.

Смежные вопросы