字符串评估中的Python反斜杠

时间:2017-02-13 03:26:14

标签: python python-3.x

我正在调试我的程序,我很困惑为什么我的一个语句评估为false。我正在检查我的数组中的倒数第二个索引(这是一个字符串)是否以'\'字符开头。我正在为post脚本编写解释器,因此这有助于我确定用户是否正在定义变量ex:\ x。我为我检查这个的if语句是评估为false而我无法弄清楚原因。有什么想法吗?

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 个答案:

答案 0 :(得分:1)

查看String literals

  

反斜杠(\)字符用于转义字符   否则具有特殊含义,例如换行符,反斜杠本身,   或引号字符。

\n表示ASCII Linefeed (LF)。因此,要在字符串文字中显示反斜杠,您需要使用另一个反斜杠转义反斜杠。

喜欢opPush("\\n1")

希望这有帮助。

答案 1 :(得分:0)

@McGrady已经指出了你的错误。如果您更改此行:

 opPush("\n1")

类似于:

 opPush("\\n1")

你可能得到你想要的东西。

答案 2 :(得分:0)

默认情况下,Python接受字符串中的反斜杠转义序列。 \n成为换行符。

要获得\n的实际序列,您可以使用双反斜杠:'\\n'或将字符串标记为“raw”:r'\n'