How can I increment a char? How can I increment a char? python python

How can I increment a char?


In Python 2.x, just use the ord and chr functions:

>>> ord('c')99>>> ord('c') + 1100>>> chr(ord('c') + 1)'d'>>> 

Python 3.x makes this more organized and interesting, due to its clear distinction between bytes and unicode. By default, a "string" is unicode, so the above works (ord receives Unicode chars and chr produces them).

But if you're interested in bytes (such as for processing some binary data stream), things are even simpler:

>>> bstr = bytes('abc', 'utf-8')>>> bstrb'abc'>>> bstr[0]97>>> bytes([97, 98, 99])b'abc'>>> bytes([bstr[0] + 1, 98, 99])b'bbc'


"bad enough not having a traditional for(;;) looper"?? What?

Are you trying to do

import stringfor c in string.lowercase:    ...do something with c...

Or perhaps you're using string.uppercase or string.letters?

Python doesn't have for(;;) because there are often better ways to do it. It also doesn't have character math because it's not necessary, either.


I came from PHP, where you can increment char (A to B, Z to AA, AA to AB etc.) using ++ operator. I made a simple function which does the same in Python. You can also change list of chars to whatever (lowercase, uppercase, etc.) is your need.

# Increment char (a -> b, az -> ba)def inc_char(text, chlist = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'):    # Unique and sort    chlist = ''.join(sorted(set(str(chlist))))    chlen = len(chlist)    if not chlen:        return ''    text = str(text)    # Replace all chars but chlist    text = re.sub('[^' + chlist + ']', '', text)    if not len(text):        return chlist[0]    # Increment    inc = ''    over = False    for i in range(1, len(text)+1):        lchar = text[-i]        pos = chlist.find(lchar) + 1        if pos < chlen:            inc = chlist[pos] + inc            over = False            break        else:            inc = chlist[0] + inc            over = True    if over:        inc += chlist[0]    result = text[0:-len(inc)] + inc    return result