将int数组转换为相应的chars

时间:2014-12-14 18:50:58

标签: python arrays

我试图将我想要转换的整数数组转换为字母表中相应的字符,例如1 = a。这就是我的矩阵的第一行:

[[16 12  9  9 12  9  9  9  8 12  9  9 12 19  3]]

我尝试使用下面的方法,但这会产生错误,有没有办法用数组做到这一点?

print chr(labels1[0] + ord('a'))

3 个答案:

答案 0 :(得分:1)

你走了:

>>> l = [[16, 12,  9,  9, 12,  9,  9,  9,  8, 12,  9,  9, 12, 19,  3]]
>>> [chr(c + ord('a') - 1) for c in l[0]]
['p', 'l', 'i', 'i', 'l', 'i', 'i', 'i', 'h', 'l', 'i', 'i', 'l', 's', 'c']

或者,如果您将它们视为单个字符串:

>>> ''.join(chr(c + ord('a') - 1) for c in l[0])
'pliiliiihliilsc'

答案 1 :(得分:1)

如果你只有一个单词(作为一个列表),那么这应该可以正常工作

In [74]: L = [16, 12,  9,  9, 12,  9,  9,  9,  8, 12,  9,  9, 12, 19,  3]

In [75]: [chr(i+ord('a')-1) for i in L]
Out[75]: ['p', 'l', 'i', 'i', 'l', 'i', 'i', 'i', 'h', 'l', 'i', 'i', 'l', 's', 'c']

In [76]: ''.join([chr(i+ord('a')-1) for i in L])
Out[76]: 'pliiliiihliilsc'

如果您有多个单词可能需要与它们之间的空格组合,那么这应该可以解决问题:

In [77]: LL = [[16, 12,  9,  9, 12,  9,  9,  9,  8, 12,  9,  9, 12, 19,  3]]

In [78]: ' '.join([''.join([chr(i+ord('a')-1) for i in L]) for L in LL])
Out[78]: 'pliiliiihliilsc'

答案 2 :(得分:0)

如果你想要a=1所以你想要基于这些字母顺序的字母,那么可以使用string模块:

>>> import string 
>>> l=[16,12,  9,  9, 12,  9,  9,  9,  8, 12,  9,  9, 12, 19, 3]
>>> ''.join([string.letters[i-1] for i in l])
'pliiliiihliilsc'

string.letters是字母表的连接字符串!

>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
相关问题