如何将数字转换为字符?

时间:2014-06-25 08:53:38

标签: python

所以我刚刚开始使用Python /编码并编写了以下简单的脚本。

text = raw_input('Enter text: ') # get text
textr = text[::-1] # reverse the order
textl = [] # make it a list
for c in textr: # convert chr to ord
    n = ord(c)
    textl.append(n) 
print str(textl)

因此,如果我输入'Ryan 123',则会输出列表'[51, 50, 49, 32, 110, 97, 121, 82]'

我无法弄清楚如何将字符串'51, 50, 49, 32, 110, 97, 121, 82'转换回字符串'Ryan 123'

这是我试过的:

textn = raw_input('Enter text: ')
textl = map(int, textn.split(" ,"))
for i in textl:
    n = chr(i)
    textl.append(n)
print str(textl)

任何意见都会受到赞赏。

3 个答案:

答案 0 :(得分:2)

您可以按list(text)或其他任何内容将文字转换为字符列表,预期可迭代。

map正在对iterable的每个项目应用一个函数:

>>> text = "Ryan 123"
>>> nums = map(ord, text)
>>> nums
[82, 121, 97, 110, 32, 49, 50, 51]

chr将数字转换为字符

>>> chr(82)
'R'

对所有数字应用chr会创建一个字符列表:

>>> map(chr, nums)
['R', 'y', 'a', 'n', ' ', '1', '2', '3']

要让所有角色都加入,请致电"".join

>>> "".join(map(chr, nums))
'Ryan 123'

答案 1 :(得分:0)

转换为ASCII值列表后,您反转了顺序。因此,您需要在转换回来时再次撤消订单:

>>> textl
[51, 50, 49, 32, 110, 97, 121, 82]
>>> text = []
>>> for i in textl:
...     text.append(chr(i))
...
>>> text
['3', '2', '1', ' ', 'n', 'a', 'y', 'R']
>>> text.reverse()
>>> text
['R', 'y', 'a', 'n', ' ', '1', '2', '3']
>>>

<小时/> 您可以在两行中进行操作:

>>> text = "Ryan 123"
>>> text_ord = reversed(map(ord, text))
>>> text_back = reversed(map(chr, text_ord))  # returns an iterator
>>> "".join(text_back)
'Ryan 123'

答案 2 :(得分:0)

您正在循环并追加到同一列表textl

textn = raw_input('Enter text: ')
textl = map(int, textn.split(","))
s = [chr(i) for i in textl]
print "".join(reversed(s))