我想计算一个字符串中前导空格的数量.这样做的最Pythonic方法是什么?
>>>F(' ' * 5 + 'a')
5
Run Code Online (Sandbox Code Playgroud)
(更新)以下是几个答案的时间安排:
import timeit
>>> timeit.timeit("s.index(re.search(r'\S',s).group())", number=10000, setup="import re;s=' a'")
0.027384042739868164
>>> timeit.timeit("len([i for i in itertools.takewhile(str.isspace,s)])", number=10000, setup="import itertools;s=' a'")
0.025166034698486328
>>> timeit.timeit("next(idx for idx,val in enumerate(s) if val != ' ')", number=10000, setup="s=' a'")
0.028306961059570312
>>> timeit.timeit("F(' a')", number=10000, setup="def F(s): return len(s)-len(s.lstrip(' '))")
0.0051808357238769531
Run Code Online (Sandbox Code Playgroud)
使用re模块
>>> s
' a'
>>> import re
>>> s.index(re.search(r'\S',s).group())
5
Run Code Online (Sandbox Code Playgroud)
运用 itertools
>>> import itertools
>>> len([i for i in itertools.takewhile(str.isspace,s)])
5
Run Code Online (Sandbox Code Playgroud)
蛮力的方式
>>> def F(s):
... for i in s:
... if i!=' ':
... return s.index(i)
...
>>> F(s)
5
Run Code Online (Sandbox Code Playgroud)