Skip to content Skip to sidebar Skip to footer

Convert Numbers Into Corresponding Letter Using Python

I was wondering if it is possible to convert numbers into their corresponding alphabetical value. So 1 -> a 2 -> b I was planning to make a program which lists all the alpha

Solution 1:

Big Letter:

chr(ord('@')+number)

1 -> A

2 -> B

...

Small Letter:

chr(ord('`')+number)

1 -> a

2 -> b

...

Solution 2:

importstringfor x, y in zip(range(1, 27), string.ascii_lowercase):
    print(x, y)

or

importstringfor x, y in enumerate(string.ascii_lowercase, 1):
    print(x, y)

or

for x, y in ((x + 1, chr(ord('a') + x)) for x inrange(26)):
    print(x, y)

All of the solutions above output lowercase letters from English alphabet along with their position:

1 a
...
26 z

You'd create a dictionary to access letters (values) by their position (keys) easily. For example:

import string
d = dict(enumerate(string.ascii_lowercase, 1))
print(d[3]) # c

Solution 3:

What about a dictionary?

>>>import string>>>num2alpha = dict(zip(range(1, 27), string.ascii_lowercase))>>>num2alpha[2]
b
>>>num2alpha[25]
y

But don't go over 26:

>>>num2alpha[27]
KeyError: 27

But if you are looking for all alphabetical combinations of a given length:

>>>import string>>>from itertools import combinations_with_replacement as cwr>>>alphabet = string.ascii_lowercase>>>length = 2>>>["".join(comb) for comb in cwr(alphabet, length)]
['aa', 'ab', ..., 'zz']

Solution 4:

You can use chr() to turn numbers into characters, but you need to use a higher starting point as there are several other characters in the ASCII table first.

Use ord('a') - 1 as a starting point:

start = ord('a') - 1a = chr(start + 1)

Demo:

>>>start = ord('a') - 1>>>a = chr(start + 1)>>>a
'a'

Another alternative is to use the string.ascii_lowercase constant as a sequence, but you need to start indexing from zero:

importstring

a = string.ascii_lowercase[0]

Solution 5:

Try a dict and some recursion:

defGetletterfromindex(self, num):
    #produces a string from numbers so#1->a#2->b#26->z#27->aa#28->ab#52->az#53->ba#54->bb

    num2alphadict = dict(zip(range(1, 27), string.ascii_lowercase))
    outval = ""
    numloops = (num-1) //26if numloops > 0:
        outval = outval + self.Getletterfromindex(numloops)

    remainder = num % 26if remainder > 0:
        outval = outval + num2alphadict[remainder]
    else:
        outval = outval + "z"return outval

Post a Comment for "Convert Numbers Into Corresponding Letter Using Python"