我正在调试我的程序,我很困惑为什么我的一个语句评估为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
答案 0 :(得分:1)
反斜杠(
\
)字符用于转义字符 否则具有特殊含义,例如换行符,反斜杠本身, 或引号字符。
\n
表示ASCII Linefeed (LF)
。因此,要在字符串文字中显示反斜杠,您需要使用另一个反斜杠转义反斜杠。
喜欢opPush("\\n1")
希望这有帮助。
答案 1 :(得分:0)
@McGrady已经指出了你的错误。如果您更改此行:
opPush("\n1")
类似于:
opPush("\\n1")
你可能得到你想要的东西。
答案 2 :(得分:0)
默认情况下,Python接受字符串中的反斜杠转义序列。 \n
成为换行符。
要获得\
和n
的实际序列,您可以使用双反斜杠:'\\n'
或将字符串标记为“raw”:r'\n'
。