Python字符串find()方法

问题描述:

我已经写了下面的代码来查找变量中的文本。它是为外部条件而不是内部条件(与外部条件相同)工作。Python字符串find()方法

name = "Sachin" 

if name.find("chin"): 
    print("Text Presented") 
    print(name) 
    if name.find("Sac"): 
     print("Sac is prsented") 
     print(name) 

O/P: 文本提交 萨钦

但它会为下面的代码(寻找下档字符)工作:

name = "Sachin" 

if name.find("chin"): 
    print("Text Presented") 
    print(name) 
    if name.find("sac"): 
     print("Sac is prsented") 
     print(name) 

O/P: 文本提交 萨钦 Sac is ptedted Sachin

有人可以告诉我为什么发生这种情况?

+3

的代码两片相同使用正则表达式在字符串搜索。 –

+2

这与'pip'或'pycharm'有什么关系? –

+0

更新了问题。 – jaibalaji

正在发生的事情是,name.find("Sac")回报0其中有False一个布尔值,因此if -clause不会触发他们你想要的方式。

尝试此代替:

name = "Sachin" 

if "chin" in name: 
    print("Text present") 
    print(name) 
    if "Sac" in name: 
     print("Sac is present") 
     print(name) 

注:0name.find("Sac")因为"Sac""Sachin"开始于位置0(Python使用0索引)返回。

除了0指数,Python也区分大小写的意义name.find("sac")回报-1(这是当你试图findstr ING是那里会发生什么)。但是,bool(-1) = 1因此if确实会触发并且其下面的代码执行。

+0

为了扩大这个范围,第二个小写''sac''返回'-1',因为它不存在,它在if语句中计算为'True'。 –

+0

我改变了问题。你可以ü现在检查 – jaibalaji

+0

我使用unpythonic方式? – jaibalaji

name.find("chin")将返回值2,其值为python中的布尔值True

name.find("Sac")将返回值0,它在python中的布尔值为False

name.find("sac")将返回值-1,它的Python中的布尔值为True

使用in运营商,我认为这会给你你想要的功能。 见下图:

name = "Sachin" 

if "chin" in name: 
    print("Text Presented") 
    print(name) 
    if "Sac" in name: 
     print("Sac is prsented") 
     print(name) 
+0

非常感谢你:) – jaibalaji

的Python find(sub)方法返回在子子被发现,返回最低索引 -1,如果它不是。

  • 在第一段代码中,由于Sachin中“S”的索引为“0”,所以name.find(“Sac”)返回“0”。因此,'if'的主体没有执行。
  • 在第二段代码中,name.find(“sac”)返回“-1”,但是如果(-1)为真,那么这段代码中的'if'正文会被执行。我希望你现在能得到这个概念。

您可以只导入re

import re 
name = "Sachin" 
if re.search("chin",name): 
    print("Text Presented") 
    print(name) 
    if re.search("Sac",name): 
     print("Sac is prsented") 
     print(name)