1

我将数据从命令行传输到 python。我想从字符串(命令行)转换为元组(python)。但我对 \ 字符有疑问。

在命令行中,我使用:

C:\>python music.py -a variable="?=="

在蟒蛇中:

#convert variable to array 
variable_array = variable.split("==")
#convert to tuple
variable_tuple = tuple(variable_array)

我得到 variable_tuple = ("?","")

我需要的结果是 variable_tuple = ("\?","")

使用时

C:\>python music.py -a variable="\?=="

结果是 variable_tuple = ("\\?","")

如何从命令行传输数据以在 python 中获取元组 ("\?","")?我需要反斜杠“?”

4

4 回答 4

3

'\\?'是一个带有一个反斜杠字符和一个问号的字符串。Usinglist是将字符串拆分为字符的便捷技巧。例如:

In [34]: list('\\?')
Out[34]: ['\\', '?']

节目'\\?'由 2 个字符组成,而不是 3 个。如果你打印它:

In [35]: print('\\')
\

您会看到它仅打印为一个反斜杠字符。双反斜杠 ,'\\'是一个转义序列


另请注意,当您打印一个元组时,您会得到其内容的repr

In [36]: print(tuple('\\?'))
('\\', '?')

'\?'与 Python中的字符串完全相同'\\?'。它们只是表示相同字符串的不同方式:

In [38]: list('\?')
Out[38]: ['\\', '?']

In [39]: list('\\?')
Out[39]: ['\\', '?']    

In [42]: '\?' is '\\?'
Out[44]: True
于 2013-01-06T12:43:25.573 回答
0

你得到你想要的。您看到的只是 '\' 的字符串表示形式,第一个 '\' 作为转义字符。

于 2013-01-06T12:43:38.757 回答
0

("\\?","")表示 '\' 被转义,否则 '\?' 将被解释为转义序列。

于 2013-01-06T12:44:48.220 回答
0

?不需要反斜杠。所以你得到的是正确和足够的。

于 2013-01-06T12:47:07.920 回答