2013-01-06 65 views
1

我將數據從命令行傳輸到python。我想從字符串(命令行)轉換爲元組(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 =( 「」 「?」)

結果我需要的是變量_tuple =(「\?」,「」)

當使用

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

結果是variable_tuple =( 「\\?」, 「」)

如何從命令行傳輸數據以獲得元組( 「\?」, 「」)在Python?我需要反斜槓「?」

+1

在提示符下嘗試'print'\\?'';它已* *給你你想要的,但由於python文字使用'\'作爲轉義字符,它逃避轉義字符使其成爲一個有效的字符串。 –

+0

如果輸入是「\\?」,我們將得到(「\\\\?」) – hoangvu68

+0

這裏沒有問題:'assert variable_tuple ==(r「\?」,「」)' – Eric

回答

3

'\\?'是一個帶有一個反斜槓字符和一個問號的字符串。 使用list是將字符串拆分爲字符的一種方便技巧。例如:

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

顯示'\\?'是由2個字符,而不是3.如果你打印:

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

你看到它打印的只是一個反斜槓字符。雙反斜槓'\\'escape sequence


還要注意的是,當你打印一個元組,你會得到其內容的repr

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

'\?'是完全相同的字符串在Python '\\?'。它們僅僅是代表相同字符串的不同方式:

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

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

In [42]: '\?' is '\\?' 
Out[44]: True 
+0

如果輸入是「\」 \「,我們會得到(」\\\\?「) – hoangvu68

+0

@ hoangvu68:我沒有Windows來檢查,但是,我確信。 – unutbu

+0

@unutbu:我需要反斜槓「?」 ( 「\?」)。我不想在「\」之前添加反斜槓。 – hoangvu68

0

你得到了你想要的東西。你看到的只是'\'的字符串表示,第一個'\'作爲轉義字符。

+0

不,我想得到(「\?」),而不是(「\\?」)。 – hoangvu68

0

("\\?","")意味着'\'被轉義,否則'\?'將被解釋爲轉義序列。

+0

我需要反斜槓「?」 – hoangvu68

0

?不需要反斜槓。所以你得到的是正確和足夠的。