print a ... z, A ... Z, "\n"' in Python

MonkeeSage MonkeeSage at gmail.com
Sat Mar 3 05:44:53 EST 2007


js  wrote:
> A way I came up with is the following, but I'm sure this is ugly.

You could abuse __getitem__ (terribly, heh!) and use slice syntax...

class crange():
    def __init__(self):
        self.valid = range(47,58) + range(65,91) + range(97,123)
    def __getitem__(self, s):
        if isinstance(s, slice):
            start, stop = s.start, s.stop
            if not start: start = '0'
            if isinstance(stop, int) and stop > 122: stop = 'z'
            elif not stop: stop  = 'z'
            clist = []
            chars = range(ord(start), ord(stop)+1)
            for i in range(len(chars)):
                if chars[i] in self.valid:
                    clist.append(chr(chars[i]))
            return ''.join(clist)
        else:
            return s

cr = crange()
print cr['A':'z']
print cr['0':'8']
print cr[:]

Regards,
Jordan




More information about the Python-list mailing list