Я пытаюсь проверить, содержит ли строка только буквы, а не цифры или символы.Как проверить, содержит ли строка только буквы в Python?
Например:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
Я пытаюсь проверить, содержит ли строка только буквы, а не цифры или символы.Как проверить, содержит ли строка только буквы в Python?
Например:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
str.isalpha()
функция работает. то есть.
if my_string.isalpha():
print('it is letters')
Простой:
if string.isalpha():
print("It's all letters")
str.isalpha()
только верно, если все символы в строке являются буквы:
Возвращенные верно, если все символы в строке являются алфавитными и есть по крайней мере, один символ, иначе false.
Демо:
>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
string.isalpha()
функция будет работать для вас.
Для людей, находящих на этот вопрос с помощью Google, которые хотят знать, если строка содержит только подмножество всех букв, я рекомендую использовать регулярные выражения:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
Извините, что вы используете nitpicking, но регулярное выражение в вашем примере также может быть '^ [A-HJ-M] * $', что, на мой взгляд, более читаемо , – Petzku
довольно простое решение, которое я придумал: (Python 3)
def only_letters(tested_string):
for letter in tested_string:
if not letter in "abcdefghjklmnopqrstuvwxyz":
return False
return True
вы можете добавить пробел в строке, которую вы проверяете против, если вы хотите пространства будет разрешено.
Если письмо * не * в "abcdefghjklmnopqrstuvwxyz" – Guibod
Вам не хватает I, и я не использую его неправильно: 'if letter ** not ** in" abcdefgh ** i ** jklmnopqrstuvwxyz "' – Guibod
Вы, вероятно, захотите использовать 'if letter.lower() ...' Как бы то ни было, буквы верхнего регистра не будут считаться. Модуль 'string' также имеет переменную, предопределенную всем буквам в алфавите. На самом деле их три: для прописных, строчных и двух. Конечно, более простое решение уже указано выше: 'isalpha'. – zondo
Похоже, что люди говорят, что используют str.isalpha
.
Это функция одной строки, чтобы проверить, являются ли все символы буквами.
def only_letters(string):
return all(letter.isalpha() for letter in string)
all
принимает итератор из булевых, и возвращает True
тогда и только тогда все булевы являются True
.
В целом, all
возвращает True
, если объекты в вашем итерируемом состоянии считаются True
. Они будут рассмотрены False
None
len(list) == 0
)False
.(Дух)func only_letters(str):
return not any(str.isdigit(c) for c in str)
Есть много символов, которые не являются цифрами, а также не являются алфавитами, поэтому это очень ненадежное решение. – zondo
На самом деле, мы сейчас в глобализованном мире 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 для более подробного обсуждения.
(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.
Примечание: В python2 это не является символом unicode, поэтому '' ä ".isalpha()' False. Однако в python3 '' ä ".isalpha()' is True, потому что python3 имеет unicode-строки по умолчанию. – Squidly
@MrBones: В Python 2 используйте объект 'unicode', если это имеет значение. –
Да, я просто добавлял его в качестве дополнительной полезной информации для ничего не подозревающих читателей. – Squidly