Stefan Behnel, 10.05.2010 08:54:
dasacc22, 08.05.2010 19:19:
This is a simple question. I'm looking for the fastest way to
calculate the leading whitespace (as a string, ie ' ').
Here is an (untested) Cython 0.13 solution:
from cpython.unicode cimport Py_UNICODE_ISSPACE
def leading_whitespace(unicode ustring):
cdef Py_ssize_t i
cdef Py_UNICODE uchar
for i, uchar in enumerate(ustring):
if not Py_UNICODE_ISSPACE(uchar):
return ustring[:i]
return ustring
Cython compiles this to the obvious C code, so this should be impossible
to beat in plain Python code.
... and it is. For a simple string like
u = u" abcdefg" + u"fsdf"*20
timeit gives me this for "s=u.lstrip(); u[:-len(s)]":
1000000 loops, best of 3: 0.404 usec per loop
and this for "leading_whitespace(u)":
10000000 loops, best of 3: 0.0901 usec per loop
It's closer for the extreme case of an all whitespace string like " "*60,
where I get this for the lstrip variant:
1000000 loops, best of 3: 0.277 usec per loop
and this for the Cython code:
10000000 loops, best of 3: 0.177 usec per loop
But I doubt that this is the main use case of the OP.
Stefan
--
http://mail.python.org/mailman/listinfo/python-list