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

时间:2015-06-14 07:47:16

标签: python escaping

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

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

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

\x41\x42\n

是否有一种简单的方法可以打印程序:

AB[newline]

2 个答案:

答案 0 :(得分:2)

传递给您的程序的字符串是'\\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]])

答案 1 :(得分:1)

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

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

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

解决此问题的另一种方法是执行@ Barak建议here - 正在转换hex个字符的内容。 这取决于你觉得容易找到的东西。