计算没有元音的字符串长度

时间:2014-07-27 08:47:49

标签: python string

'一个字符串: -

a = 'abcderui'

我想计算字符串a减去元音的长度。实现它的最快方法是什么?

目前我正在做: -

a = list(a)
for i in a:
    if i in vowels:
        continue
    count +=1

3 个答案:

答案 0 :(得分:6)

如果字符串不大,那么str.translate是最佳选择:

>>> a = 'abcderui'
>>> len(a.translate(None, 'aeiou'))
4

<强>时序:

>>> a = 'abcderui'*100
>>> %timeit len(a.translate(None, 'aeiou'))
1000000 loops, best of 3: 1.86 µs per loop
>>> %timeit sum(1 for c in a if c not in 'aeiou')
10000 loops, best of 3: 53.2 µs per loop
>>> %timeit len(nonvowels.findall(a))
10000 loops, best of 3: 65.3 µs per loop
>>> %timeit len(vowels.sub('', a))
10000 loops, best of 3: 72 µs per loop

答案 1 :(得分:3)

正则表达式解决方案:

import re
nonvowels = re.compile('[^aeiou]', re.IGNORECASE)
result = len(nonvowels.findall(s))

vowels = re.compile('[aeiou]', re.IGNORECASE)
result = len(vowels.sub('', s))

答案 2 :(得分:2)

sum(1 for c in some_string if c not in 'aeiou')

如果您想要不带元音的字符串,只需使用列表推导而不是sumc而不是1

但请注意,不同的语言有不同的元音!