在字符串Python中计算多个字母

时间:2015-09-05 14:30:01

标签: python string count

我正在尝试计算下面字符串中的字母'l'和'o'。 如果我算上一个字母似乎有效,但只要我计算下一个字母'o',字符串就不会增加总数。我错过了什么?

s = "hello world"

print s.count('l' and 'o')
  

输出:5

4 个答案:

答案 0 :(得分:3)

您可能意味着s.count('l') + s.count('o')

您粘贴的代码等于s.count('o')and运算符检查其第一个操作数(在本例中为l)是否为false。如果为false,则返回其第一个操作数(l),但不是,因此返回第二个操作数(o)。

>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> True and 'x'
'x'
>>> False and 'x'
False
>>> 'x' and True
True
>>> 'x' and False
False
>>> 'x' and 'y'
'y'
>>> 'l' and 'o'
'o'
>>> s.count('l' and 'o')
2
>>> s.count('o')
2
>>> s.count('l') + s.count('o')
5

Official documentation

答案 1 :(得分:2)

或者,由于您要计算给定字符串中多个字母的外观,请使用collections.Counter

>>> from collections import Counter
>>>
>>> s = "hello world"
>>> c = Counter(s)
>>> c["l"] + c["o"]
5

请注意,您当前使用的s.count('l' and 'o') would evaluates.count('o')

  

表达式x and y首先评估x:如果x为false,则其值为   回;否则,将评估y,结果值为   返回。

换句话说:

>>> 'l' and 'o'
'o'

答案 2 :(得分:2)

使用正则表达式:

>>> import re
>>> len(re.findall('[lo]', "hello world"))
5

map

>>> sum(map(s.count, ['l','o']))
5

答案 3 :(得分:0)

代码如下:

import re
name1 = input("What is your name? ")
name2 = input("Whats is their name? ")
c = len(re.findall('[true]', name1 + name2)

如果你有多个字符串。