generating a liste of characters

Mark Tolonen metolone+gmane at gmail.com
Fri Dec 5 08:56:34 EST 2008


<bearophileHUGS at lycos.com> wrote in message 
news:df7b75eb-97bf-4538-880b-f65b5ed992ff at u14g2000yqg.googlegroups.com...
>Mark Tolonen:
>> Writing a helper function reduces code repetition and improves 
>> readability:
>> def crange(startch,endch):
>> '''Return a list of characters from startch to endch, inclusive.'''
>> return [chr(c) for c in xrange(ord(startch),ord(endch)+1)]
>
>In Python ranges are open on the right, so I name cinterval such
>function.

Yes, and that's fine when dealing with integers and slicing, but when 
dealing with characters, it is non-obvious what character to use.  What 
"looks" correct?

   chars = crange('0','9') + crange('A','Z') + crange('a','z') # inclusive

or

   chars = crange('0',':') + crange('A','[') + crange('a','{')  # open right

or if you didn't know the character after the one you actually wanted:

   chars = crange('0',chr(ord('9')+1)) + crange('A',chr(ord('Z')+1)) + 
crange('a',chr(ord('z')+1))  # open right, but messy

-Mark 





More information about the Python-list mailing list