如何检查字符串是否仅包含字母?
- 2025-03-20 08:48:00
- admin 原创
- 33
问题描述:
我正在尝试检查字符串是否仅包含字母,而不包含数字或符号。
例如:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
解决方案 1:
简单的:
if string.isalpha():
print("It's all letters")
str.isalpha()
仅当字符串中的所有字符都是字母时才为真:
如果字符串中的所有字符都是字母且至少有一个字符,则返回 true,否则返回 false。
演示:
>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
解决方案 2:
该str.isalpha()
功能有效。即。
if my_string.isalpha():
print('it is letters')
解决方案 3:
对于通过 Google 找到此问题并想知道字符串是否仅包含所有字母的子集的人,我建议使用正则表达式:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
解决方案 4:
您可以利用正则表达式。
>>> 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。
解决方案 5:
实际上,我们现在已经进入了 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
如您所见,白名单类别可以通过函数内的元组轻松控制。有关更详细的讨论,请参阅本文。
解决方案 6:
该string.isalpha()
功能将为您服务。
请参阅http://www.tutorialspoint.com/python/string_isalpha.htm
解决方案 7:
看起来人们正在说使用str.isalpha
。
这是用于检查所有字符是否都是字母的一行函数。
def only_letters(string):
return all(letter.isalpha() for letter in string)
all
接受布尔值的可迭代,并当且True
仅当所有布尔值都是 时返回True
。
更一般地,如果迭代器中的对象被视为,all
则返回。这些将被视为True
`True`False
0
None
空数据结构(即
len(list) == 0
:)False
(呃)
解决方案 8:
(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 中检查了上述示例。
解决方案 9:
我想到了一个非常简单的解决方案:(Python 3)
def only_letters(tested_string):
for letter in tested_string:
if letter not in "abcdefghijklmnopqrstuvwxyz":
return False
return True
如果您希望允许使用空格,则可以在要检查的字符串中添加一个空格。
扫码咨询,免费领取项目管理大礼包!