在字符串中搜索“\ *”

时间:2018-03-14 20:31:14

标签: python

我试图使用python在字符串中找到字符串模式,如'/ *'。 我尝试了如下代码片段:

strk = "*\"
if strk in num 
   print ("here it is")

但是在第一行我发出错误声明:

语法错误:“扫描字符串文字时的EOL。

如何使解释器区分用作字符串元素的“\”和作为换行符的“\”? I.受到以下链接的启发,尝试使用

strk = "*(\)"

但这不起作用。

http://python-reference.readthedocs.io/en/latest/docs/str/escapes.html

3 个答案:

答案 0 :(得分:4)

实际上你必须逃避逃避反斜杠

strk = "*\\"
if strk in num:
   print ("here it is")

答案 1 :(得分:4)

  

如何使解释器区分用作字符串元素的“\”和作为换行符的“\”?

好的,首先,\不是换行符。 \n是换行符。 \t是制表符。等等。你已经在一些第三方文档中找到了它们的完整列表,所以我不会在这里列出它们。

那么,解释器 * 如何区分\表示实际的反斜杠,而\表示转义序列的第一个字符?

规则非常简单: ** 它会查看下一个字符,如果它是ntx或其他任何字符你找到的那个列表,然后\是转义序列的第一个字符;否则,这只是一个简单的反斜杠。 (对于原始字符串有一个单独的规则,但我们不要在此担心。 ***

如果你想确保你有一个简单的反斜杠:注意\\\的转义序列。所以,只需要逃避反斜杠以确保它是反斜杠而不是其他东西的逃避:

strk = "*\\"

或者,用不会让你头疼的术语:在源代码字符串文字中加倍所有的反斜杠。

*实际上,当它到达解释器时,它只是一个字符串常量对象;它是处理转义序列的编译器。但这并不重要。

**但它与C使用的规则不同。例如,在Python中,\Q表示反斜杠后跟Q,但在C中,它只是Q.大多数其他语言都有要么复制了C,要么只是使用反斜杠而不是记录的转义序列的一部分。

***对于大多数与反斜杠相关的混淆情况,原始字符串使一切变得更容易。但是对于字符串末尾反斜杠的特定情况,它们会让事情变得更加混乱。

答案 2 :(得分:1)

您的代码中出现两个错误。

首先,当在代码中写入反斜杠(\)时,应该使用两个反斜杠,如\\。这样,解释器就不会在反斜杠或新行之间混淆。

第二个错误是你的if语句,你在if语句的末尾缺少一个冒号。我还建议您使用以下代码:

if "\\*" in word: 
   print ("here it is")

其中word可以是任何字符串。