如何在python中搜索字符串中列表的每个元素

时间:2014-11-17 19:10:32

标签: python list

让我们说 有一个清单

vowels = ['a', 'e', 'i', 'o', 'u']
x = raw_input("Enter something?")

现在如何在x中找到这些元音的实例?我想修改x,使其只包含非元音字母。

.find无效。

4 个答案:

答案 0 :(得分:0)

您可以为每个字母使用count功能。例如,x.count('a')将计算单词中'a'的数量。迭代所有元音并使用sum查找元音总数。

vowelCount = sum(x.count(vowel) for vowel in vowels)

答案 1 :(得分:0)

from collections import Counter
vowels = {'a', 'e', 'i', 'o', 'u'}
s = "foobar"
print(sum(v for k,v in Counter(s).items() if k in vowels))
3

或者使用默认值为0的dict.get:

s = "foobar"
c = Counter(s)
print(sum(c.get(k,0) for k in vowels))
3

答案 2 :(得分:0)

你可以这样使用,

>>> st = 'test test'
>>> len(re.findall('[aeiou]', st, re.IGNORECASE))
2

或者,

>>> vowels = ['a', 'e', 'i', 'o', 'u']
>>> sum(map(lambda x: vowels.count(x) if x in vowels else 0, st))
2

或者,

>>> len([ ch for ch in st if ch in vowels])
2

答案 3 :(得分:0)

vowels = {'a', 'e', 'i', 'o', 'u'}
x  =input('Enter...')
new_string = ''.join(c for c in x if c not in vowels)

将创建x的新副本减去保存为new_string的元音。我已将vowels更改为一组,以便查找时间更快(在此示例中有点微不足道,但在适当的情况下起诉是一个好习惯)。字符串是不可变的,所以你不能只从x中取出字母,你必须创建一个新的字符串,它是x的副本而没有你不需要的值。 .join()将整个事情重新组合在一起。