67

我正在尝试检查字符串是否仅包含字母,而不包含数字或符号。

例如:

>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
4

9 回答 9

122

简单的:

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

str.isalpha()仅当字符串中的所有字符都是字母时才为真:

如果字符串中的所有字符都是字母并且至少有一个字符,则返回 true,否则返回 false。

演示:

>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
于 2013-09-06T22:22:09.783 回答
20

str.isalpha()功能有效。IE。

if my_string.isalpha():
    print('it is letters')
于 2013-09-06T22:21:28.920 回答
11

对于通过谷歌找到这个问题的人,他们可能想知道一个字符串是否只包含所有字母的一个子集,我建议使用正则表达式:

import re

def only_letters(tested_string):
    match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
    return match is not None
于 2015-03-20T13:25:02.493 回答
7

string.isalpha()功能将为您工作。

http://www.tutorialspoint.com/python/string_isalpha.htm

于 2013-09-06T22:24:29.807 回答
7

您可以利用正则表达式。

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

于 2019-01-07T07:30:58.213 回答
7

实际上,我们现在处于 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

如您所见,列入白名单的类别可以很容易地由函数内的元组控制。有关更详细的讨论,请参阅本文。

于 2017-06-12T09:49:19.310 回答
5

看起来人们说要使用str.isalpha.

这是检查所有字符是否都是字母的单行函数。

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

all接受一个可迭代的布尔值,True如果所有布尔值都是 ,则返回True

更一般地说,如果您的可迭代对象中的对象将被考虑,则all返回。这些会被考虑TrueTrueFalse

  • 0
  • None
  • 空数据结构(即len(list) == 0:)
  • False. (呃)
于 2015-12-18T19:52:58.007 回答
3

(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 中检查了上面的示例。

于 2018-01-02T06:50:00.897 回答
0

我想出了一个非常简单的解决方案:(Python 3)

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

如果您希望允许使用空格,您可以在要检查的字符串中添加一个空格。

于 2015-11-12T14:45:27.837 回答