我正在尝试检查字符串是否仅包含字母,而不包含数字或符号。
例如:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
我正在尝试检查字符串是否仅包含字母,而不包含数字或符号。
例如:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
简单的:
if string.isalpha():
print("It's all letters")
str.isalpha()
仅当字符串中的所有字符都是字母时才为真:
如果字符串中的所有字符都是字母并且至少有一个字符,则返回 true,否则返回 false。
演示:
>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
该str.isalpha()
功能有效。IE。
if my_string.isalpha():
print('it is letters')
对于通过谷歌找到这个问题的人,他们可能想知道一个字符串是否只包含所有字母的一个子集,我建议使用正则表达式:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
该string.isalpha()
功能将为您工作。
您可以利用正则表达式。
>>> import re
>>> pattern = re.compile("^[a-zA-Z]+$")
>>> pattern.match("hello")
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> pattern.match("hel7lo")
>>>
如果找到匹配项,该match()
方法将返回一个对象。Match
否则它将返回None
。
更简单的方法是使用该.isalpha()
方法
>>> "Hello".isalpha()
True
>>> "Hel7lo".isalpha()
False
isalpha()
如果字符串中至少有 1 个字符并且字符串中的所有字符都是字母,则返回 true。
实际上,我们现在处于 21 世纪的全球化世界,人们不再仅使用 ASCII 进行交流,因此在回答“是否仅是字母”的问题时,您还需要考虑来自非 ASCII 字母的字母。Python 有一个非常酷的unicodedata库,其中允许对 Unicode 字符进行分类:
unicodedata.category('陳')
'Lo'
unicodedata.category('A')
'Lu'
unicodedata.category('1')
'Nd'
unicodedata.category('a')
'Ll'
类别及其缩写在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
如您所见,列入白名单的类别可以很容易地由函数内的元组控制。有关更详细的讨论,请参阅本文。
看起来人们说要使用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
. (呃)(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 中检查了上面的示例。
我想出了一个非常简单的解决方案:(Python 3)
def only_letters(tested_string):
for letter in tested_string:
if letter not in "abcdefghijklmnopqrstuvwxyz":
return False
return True
如果您希望允许使用空格,您可以在要检查的字符串中添加一个空格。