2017-02-13 17 views
0

我正在調試我的程序,我很疑惑爲什麼我的一個語句正在評估爲false。我正在檢查我的數組中的倒數第二個索引(它是一個字符串)是否以'\'開頭。我正在爲post腳本編寫解釋器,所以這可以幫助我確定用戶是否定義了一個變量ex:\ x。我的if語句爲我檢查這個是評估爲false,我無法弄清楚爲什麼。有什麼想法嗎?字符串評估中的Python反斜槓

def psDef(): 
    if(opstack[-2].startswith('\\')): # this is evaluating to false for some reason 
     name = opPop() #pop the name off the operand stack 
     value = opPop() #pop the value off the operand stack 
     define(name, value) 
    else: 
     print("Improper use of keyword: def") 

def testLookup(): 
    opPush("\n1") 
    opPush(3) 
    psDef() 
    if lookup("n1") != 3: 
     return False 
    return True 
+3

'「\ n1」'不以反斜槓開始。它從一個換行符開始,在字符串文字中用'\ n'表示。 – user2357112

回答

1

看一看String literals

反斜線()字符用於轉義 否則有特殊含義的字符,如換行符,反斜槓本身, 或引用字符。

\n意味着ASCII Linefeed (LF)。所以,以顯示在一個字符串,你需要逃避與另一個反斜槓反斜槓反斜槓。

opPush("\\n1")

希望這有助於。

0

@McGrady已經指出你的錯誤。如果改變這一行:

opPush("\n1") 

喜歡的東西:

opPush("\\n1") 

,你可能會得到你想要的。

0

默認情況下,Python接受字符串中的反斜槓轉義序列。 \n成爲換行符。

要獲得\實際序列和n你可以使用一個雙反斜線:'\\n'或標記字符串作爲「原始」:r'\n'