Problem stripping line feeds
Tony Meyer
t-meyer at ihug.co.nz
Sat Jul 24 22:00:03 EDT 2004
> I am using the following function to try and strip both
> carraige returns and line feeds, ASCII 13 and 10
> respectively, from a string. It doesn't seem to be working:
>
> x = filter(lambda c: c not in "\012\015", string.strip(x)) #
> octal version
>
> I also tried:
>
> x = filter(lambda c: c not in "\r\n", string.strip(x)) #
> escape char. version
>
> What am I doing wrong?
Like Roel, this works for me. Couple of things:
1. Avoid doing string.strip(x) - use x.strip() instead.
2. Using replace() is a lot more straightforward than using filter and
lambda. It appears to be (a lot) faster, too:
>>> import timeit
>>> t1 = timeit.Timer(r"s.replace('\r', '').replace('\n', '')", r"s = 'This
is a sample \r string with \n various \r end of line \r characters \n\r\n'")
>>> t1.timeit()
4.1181809419912305
>>> t2 = timeit.Timer(r"filter(lambda c: c not in '\r\n', s.strip())", r"s =
'This is a sample \r string with \n various \r end of line \r characters
\n\r\n'")
>>> t2.timeit()
54.062190865040108
=Tony Meyer
More information about the Python-list
mailing list