计算字符串中的字母数(不是字符,只有字母)

时间:2019-09-17 19:31:33

标签: python

我试图寻找答案,但是我只是在寻找如何计算字符数。我需要知道如何计算字符串中字母的数量。还需要知道如何计算字符串中数字的数量。

例如:

"abc 12"

输出应为

  

字母:3   数字:2

6 个答案:

答案 0 :(得分:4)

两种情况下都有字符串方法。您可以在Using @RequestParam for multipartfile is a right way?

上找到更多信息
s = "abc 12"

sum(map(str.isalpha, s))
# 3
sum(map(str.isnumeric, s))
# 2

或对sum使用生成器理解:

sum(i.isalpha() for i in s)
# 3
sum(i.isnumeric() for i in s)
# 2

答案 1 :(得分:1)

类似:

s = 'abc 123'
len([c for c in s if c.isalpha()])
3

会工作的。

此外,由于您True的评估结果为1,而False的评估结果为0,因此您可以执行以下操作:

sum(c.isalpha() for c in s)

答案 2 :(得分:0)

您可以使用string.isdigit()来检查字符串(或字符)是否仅包含数字,而string.isalpha()可以检查字符串(或字符)是否仅包含数字并执行此操作

str='abc 123'
nums=len([char for char in str if char.isdigit()])
chars=len([char for char in str if char.isalpha()])

答案 3 :(得分:0)

您可以尝试:

s = 'abc 12'

p = [0 if c.isalpha() else 1 if c.isnumeric() else -1 for c in s]

letters, numeric = p.count(0), p.count(1)

print(letters, numeric)

输出:

3 2

答案 4 :(得分:0)

假设您使用的是Python 3.6+,我认为使用generator expressionssum函数和f字符串可以解决您的问题:

>>> s = 'abc 12'
>>> numbers = sum(i.isnumeric() for i in s)
>>> letters = sum(i.isalpha() for i in s)
>>> f'letters: {letters} numbers: {numbers}'
'letters: 3 numbers: 2'

答案 5 :(得分:0)

您可以使用 lambda 函数(只需一行代码:)

counter = lambda word,TYPE: len([l for l in word if l.isalpha()]) if TYPE == str else len([n for n in word if n.isdigit()]) if TYPE == int else len([c for c in word if c.strip()]) if TYPE == all else TypeError("expected 'str' or 'int' or 'all' of 'TYPE' argument")

word = "abcd 123"

lettersCounter = counter(word, str) # >= 4
numbersCounter = counter(word, int) # >= 3
allCounter = counter(word, all) # >= 7