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

Python one-liner to print text converted from ASCII numbers?

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

python -c "print unichr(72)"

例如

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

但这仅适用于单个字符。如果我有一个 ASCII 字符串,比如说 72 101 108 108 111 32 87 111 114 108 100 for Hello 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 ~]$ 
$ 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版本

unichr 不再存在于 python3 中。相反,使用:

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

怎么样

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

+, 分隔 unichr() 调用将有效。

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

您可以看到 + 连接并且 , 在两者之间添加了一个 space。

因此,您可以在 unichr() 函数调用之间使用 + 运算符