【问题标题】:Python string find() methodPython 字符串 find() 方法
【发布时间】:2017-12-24 22:54:22
【问题描述】:

我编写了以下代码来查找变量中的文本。它适用于外部 if 条件,但不适用于内部条件(与外部条件相同)。

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 : 呈现的文本 萨钦 囊被提出 萨钦

谁能告诉我为什么会这样?

【问题讨论】:

  • 两段代码是一样的。
  • 这与pip 或pycharm 有什么关系?
  • 更新了问题。
  • 为什么投反对票的人?他至少写了一些代码..
  • @Ev.Kounis 他两次编写了相同的代码,这就是为什么他得到了很多反对意见。现在,他编辑了。

标签: python string python-3.x methods


【解决方案1】:

发生的情况是 name.find("Sac") 返回 0 其布尔值为 False,因此 if 子句不会按您想要的方式触发。

试试这个:

name = "Sachin"

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

注意:0 由 name.find("Sac") 返回,因为 "Sac" 在 "Sachin" 处从位置 0 开始(Python 使用 0-index)。

除了 0-index,Python 还区分大小写,这意味着 name.find("sac") 返回 -1(当您在 string 中尝试 find 时会发生这种情况不强>那里)。但是,bool(-1) = 1 所以if 最终会触发并执行它下面的代码。

【讨论】:

  • 并在此基础上进行扩展,第二个小写 "sac" 返回 -1,因为它不存在,在 if 语句中计算为 True。
  • 我已经修改了问题。你现在可以检查一下吗
  • 我是不是以一种非pythonic的方式使用?
  • @jaibalaji 你用错了方法。要成为unpythonic,它必须首先工作。
【解决方案2】:

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)

【讨论】:

    【解决方案3】:

    Python find(sub) 方法返回找到子字符串 sub 的 最低索引,如果没有则返回 -1。

    • 在第一段代码中,name.find("Sac") 返回“0”,因为“S”在 Sachin 中的索引为“0”。因此,'if' 的主体没有执行。
    • 在第二段代码中,name.find("sac") 返回“-1”,但 if(-1) 为真,因此执行这段代码中的“if”主体。我希望你现在能理解这个概念。

    【讨论】:

      【解决方案4】:

      您可以通过导入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)
      

      【讨论】:

        猜你喜欢
        • 2018-08-23
        • 1970-01-01
        • 2022-11-11
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 2022-01-13
        相关资源
        最近更新 更多