将字符串中的转义字符(如“\\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]])
我的程序从命令行参数中得到一个字符串,其中包含许多转义字符。
./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]])