所以我试图运行此命令if r"\" in text:
,但它不起作用。它认为整行是一个字符串。我该如何解决这个问题?
答案 0 :(得分:6)
原始文字不是完全原始的。文档的相关段落位于https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals的最底部,就在下一节(" String literal concatenation")开始之前:
即使在原始文字中,也可以使用反斜杠转义引号,但反斜杠仍保留在结果中;例如,
r"\""
是一个有效的字符串文字,由两个字符组成:反斜杠和双引号;r"\"
不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始文字不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。另请注意,单行反斜杠后跟换行符被解释为文字的一部分,而不是行继续。
(原文强调。)
因此,您可以编写r"\\"
并获取包含两个反斜杠的字符串,您可以编写r"\""
并获取包含一个反斜杠和一个双引号字符的字符串,但是如果你想要一个包含只有一个反斜杠的字符串,你就不能用原始文字来做。您需要改为编写"\\"
。
答案 1 :(得分:3)
使用此:
"\\"
即转义反斜杠,而不是转义报价。
答案 2 :(得分:3)
你正在努力逃脱角色。
由于\
是一个转义字符,您必须将其转义为“此字符”,而不是“以下内容将被转义”。
if '\\' in 'foo\\':
答案 3 :(得分:2)
if "\\" in text
这应该有用,你只需要逃避它