can it be shorter?
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Sat Jun 6 12:34:38 EDT 2009
On Sat, 06 Jun 2009 15:59:37 +0000, kj wrote:
> In <h0e0oi$1es2$1 at adenine.netfront.net> "tsangpo"
> <tsangpo.newsgroup at gmail.com> writes:
>
>>I want to ensure that the url ends with a '/', now I have to do thisa
>>like below.
>>url = url + '' if url[-1] == '/' else '/'
>
>>Is there a better way?
>
> It's a pity that in python regexes are an "extra", as it were. Otherwise
> I'd propose:
>
> url = re.sub("/?$", "/", url)
Thank goodness regexs are an "extra" in Python, because it discourages
noobs from pulling out the 80 pound sledgehammer of the regex engine to
crack the peanut of a test-and-concatenate:
>>> from timeit import Timer
>>> min(Timer(
... "if not s.endswith('/'): s += '/'", "s = 'abcd/efgh'").repeat())
0.70030903816223145
>>> min(Timer(
... "sub('/?$', '/', s)", "from re import sub; s = 'abcd/efgh'").repeat())
7.6922709941864014
That's more than ten times slower. Really, a regex is massive overkill
for a task that simple.
--
Steven
More information about the Python-list
mailing list