将字符串作为参数传递,而不将其视为原始字符串

Sia*_*ash 2 python python-2.7

我想将一个字符串传递给我的python脚本,该脚本包含转义序列,例如:\x00\t,和空格.
但是当我传入我的字符串时:

some string\x00 more \tstring
Run Code Online (Sandbox Code Playgroud)

python将我的字符串视为原始字符串,当我从脚本内部打印该字符串时,它按字面打印字符串,并不将其\视为转义序列.
即它打印完全上面的字符串.

更新:(刚刚)
我正在使用python 2.7.5重现,创建一个脚本,让我们调用它myscript.py:

import sys
print(sys.argv[1])
Run Code Online (Sandbox Code Playgroud)

现在保存它并从windows命令提示符中调用它:

c:\Python27\python.exe myscript.py "abcd \x00 abcd"
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

> 'abcd \x00 abcd'
Run Code Online (Sandbox Code Playgroud)

PS在我的实际脚本中,我使用的是选项解析器,但两者都有相同的效果.也许我可以为选项解析器设置一个参数来处理转义序列?

Joh*_*ner 6

myscript.py包含:

import sys
print(sys.argv[1].decode('string-escape'))
Run Code Online (Sandbox Code Playgroud)

结果abcd abcd


900*_*000 5

您收到的字符串sys.argv[1]正是您在命令行中键入的字符串.它的反斜杠序列保持不变,没有解释.

要解释它们,请遵循以下答案:基本上使用.decode('string_escape').