I've been using Parsel for a while and I constantly find myself calling .strip() after .get() or .getall().
I think it would be very helpful if Parsel provided a built-in mechanism for that.
I suggest adding a strip kwarg to get() and getall().
It would be a boolean value, and when it's true, Parsel would call strip() on every match.
Example with get():
# Before
author = selector.css("[itemprop=author] [itemprop=name]::text").get()
if author:
author = author.strip()
# After
author = selector.css("[itemprop=author] [itemprop=name]::text").get(strip=True)
Example with getall():
# Before
authors = [author.strip() for author in selector.css("[itemprop=author] [itemprop=name]::text").getall()]
# After
authors = selector.css("[itemprop=author] [itemprop=name]::text").getall(strip=True)
Alternatively, we could change the ::text pseudo-element to support an argument, like ::text(strip=1).
That would be extremely handy too and probably more flexible than my original suggestion, but also more difficult to implement.
I know I could strip whitespaces with re() and re_first() but it's overkill and hides the intent.
Hi,
Thank you very much for this excellent library ❤️
I've been using Parsel for a while and I constantly find myself calling
.strip()
after.get()
or.getall()
. I think it would be very helpful if Parsel provided a built-in mechanism for that.I suggest adding a
strip
kwarg toget()
andgetall()
. It would be a boolean value, and when it's true, Parsel would callstrip()
on every match.Example with
get()
:Example with
getall()
:Alternatively, we could change the
::text
pseudo-element to support an argument, like::text(strip=1)
. That would be extremely handy too and probably more flexible than my original suggestion, but also more difficult to implement.I know I could strip whitespaces with
re()
andre_first()
but it's overkill and hides the intent.Best regards, Benoit