Python单行打印从ASCII数字转换的文本?

时间:2017-12-04 06:43:00

标签: python ascii code-snippets idiomatic ordinal

以下命令从ASCII代表中打印文本。

python -c "print unichr(72)"

E.g。

[user@linux ~]$ python -c "print unichr(72)"
H
[user@linux ~]$

但这只适用于单个角色。如果我有一个ASCII字符串,对72 101 108 108 111 32 87 111 114 108 100Hello World,是否可以在Python中将其转换为一行?

我一直在尝试以下命令,但它没有用。

[user@linux ~]$ python -c "print unichr(72)" "unichr(72)"
H
[user@linux ~]$ 

...

[user@linux ~]$ python -c "print unichr(72) unichr(72)"      
  File "<string>", line 1
    print unichr(72) unichr(72)
                          ^
SyntaxError: invalid syntax
[user@linux ~]$

...

[user@linux ~]$ python -c "print unichr(72)(72)"         
Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: 'unicode' object is not callable
[user@linux ~]$ 

3 个答案:

答案 0 :(得分:2)

$ python -c 'print "".join(unichr(i) for i in (72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100))'
Hello World

如何运作

这会生成一个unicode字符列表:

>>> [unichr(i) for i in (72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100)]
[u'H', u'e', u'l', u'l', u'o', u' ', u'W', u'o', u'r', u'l', u'd']

这将字符列表组合成一个字符串:

>>> ''.join(unichr(i) for i in (72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100))
u'Hello World'

Python3版本

python3中不再存在

unichr。相反,使用:

>>> print("".join(chr(i) for i in (72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100)))
Hello World

答案 1 :(得分:1)

怎么样

 python -c 'print "".join(unichr(int(c)) for c in "72 101 108 108 111 32 87 111 114 108 100".split(" "))'

答案 2 :(得分:1)

unichr()来电与+,分开即可。

示例:python -c "print unichr(72)+unichr(73),unichr(65)"打印HI A

您可以看到+个联合,,在其间添加空格。

因此,您可以在+函数调用

之间使用unichr()运算符