2017-05-03 238 views
3

所以我试图运行这个命令if r"\" in text:它不起作用。它认为整条线是一条线。我该如何解决?如何测试符号(反斜杠)是否在字符串中?

+4

'if r“\\”in text' –

+0

特殊字符需要转义。 – GhostCat

+2

下次您提出问题时,请确保您显示了您获得的错误类型,并且提供了重现错误的最低代码。请参阅https://stackoverflow.com/help/how-to-ask和https://stackoverflow.com/help/mcve – Antonio

回答

6

原始文字不完全。文件的有关段落是在https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals最底部,就在接下来的一节(“字符串字面串联”)开始:

即使在原始文字,引号可以用反斜杠进行转义,但反斜线仍然在结果中;例如,r"\""是由两个字符组成的有效字符串文字:反斜杠和双引号; r"\"不是有效的字符串字面值(即使原始字符串不能以奇数个反斜杠结尾)。具体而言,原始文字不能以单个反斜杠结尾(因为反斜杠会转义下面的引号字符)。还要注意的是,一个反斜杠后跟一个换行符被解释为这两个字符作为文字的一部分,而不是作为续行。

(重点在原创。)

所以,你可以写r"\\"并获得含反斜杠一个字符串,你可以写r"\""并获得包含一个反斜杠和一个双引号字符的字符串,但是如果你想要一个包含的字符串,只需要一个反斜杠,那么你不能用原始文本来完成。您需要改为编写"\\"

3

使用此:

"\\" 

也就是说,一个转义反斜杠,而不是逃脱报价。

3

你正在努力逃避字符。

因为\是你逃跑的转义字符它意味着“这个角色”,而不是“什么下面将进行转义”。

if '\\' in 'foo\\': 
2
if "\\" in text 

这应该工作,你只需要逃避它