繁体   English   中英

字符串评估中的Python反斜杠

[英]Python backslash in string evaluation

我正在调试程序,并且对为什么我的一条语句评估为false感到困惑。 我正在检查数组中的倒数第二个索引(它是一个字符串)是否以'\\'字符开头。 我正在为后脚本编写解释器,因此这有助于我确定用户是否正在定义变量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

看看字符串文字

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

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

opPush("\\\\n1")

希望这可以帮助。

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

 opPush("\n1")

像这样:

 opPush("\\n1")

您可能会得到想要的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM