将字符串中的转义字符(如“\\n” - 两个字符)转换为 ASCII 字符(换行符)

Convert escape characters in strings (like "\\n" - two characters) into ASCII character (newline)

我的程序从命令行参数中得到一个字符串,其中包含许多转义字符。

./myprog.py "\x41\x42\n"

当我打印时 "sys.argv[1]"。 我上屏了:

\x41\x42\n

有没有一种简单的方法可以代替程序打印:

AB[newline]

尝试按以下方式传递参数:

./myprog.py $'\x41\x42\n'

$'...' 符号允许与类似 \x00 的转义序列一起使用,用于从十六进制符号构造任意字节序列。

解决此问题的另一种方法是执行@Barak suggested 的操作——即转换hex 字符。 这只是取决于你觉得什么对你来说容易。

传递给您程序的字符串是'\x41\x42\n'

我认为没有简单的方法可以将其还原为 'AB\n'

您必须将字符串拆分 '\',并分别处理每个元素。

如果您的字符串始终采用 '\x..\x..\x..\n' 形式,那么您可以这样做:

print ''.join([chr(int('0'+k,16)) for k in sys.argv[1].split('\')[1:-1]])