当前位置: 首页 > 面试题库 >

Python:在字符串中查找子字符串并返回该子字符串的索引

暨承平
2023-03-14
问题内容

我有:

  • 功能: def find_str(s, char)

  • 和一个字符串:"Happy Birthday"

我本质上是想输入"py"并返回,3但是我却不断2地返回。

码:

def find_str(s, char):
    index = 0           
    if char in s:
        char = char[0]
        for ch in s:
            if ch in s:
                index += 1
            if ch == char:
                return index

    else:
        return -1

print(find_str("Happy birthday", "py"))

不知道怎么了!


问题答案:

理想情况下,您会
像痴呆的刺猬说的那样 使用
str.find

str.index
。但是你说你不能…


您的问题是您的代码仅搜索搜索字符串的第一个字符(第一个字符在索引2)。

您基本上是说ifchar[0]是in s,递增index直到ch == char[0]测试它返回3时,但这仍然是错误的。这是一种方法。

def find_str(s, char):
    index = 0

    if char in s:
        c = char[0]
        for ch in s:
            if ch == c:
                if s[index:index+len(char)] == char:
                    return index

            index += 1

    return -1

print(find_str("Happy birthday", "py"))
print(find_str("Happy birthday", "rth"))
print(find_str("Happy birthday", "rh"))

它产生了以下输出:

3
8
-1


 类似资料:
  • GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串

  • 问题内容: 我曾经在JavaScript中这样做: Swift没有此功能,如何做类似的事情? 问题答案: 编辑/更新: Xcode 11•Swift 5.1或更高版本 用法: 不区分大小写的样本 正则表达式样本

  • 问题 你需要搜索一个字符串,并返回匹配的起始位置或匹配值本身。 解决方案 有几种使用正则表达式的方法来实现这个功能。其中一些方法被称为 RegExp 模式或对象还有一些方法被称为 String 对象。 RegExp 对象 第一种方式是在 RegExp 模式或对象中调用 test 方法。test 方法返回一个布尔值: match = /sample/.test("Sample text") # =>

  • 问题 你想在一条消息中查找某个关键字第一次或最后一次出现的位置。 解决方案 分别使用 JavaScript 的 indexOf() 和 lastIndexOf() 方法查找字符串第一次和最后一次出现的位置。语法: string.indexOf searchstring, start message = "This is a test string. This has a repeat or two

  • 我如何在O(N**2)个时间内完成它?

  • 问题内容: 如何找到两个子字符串之间的字符串? 我当前的方法是这样的: 但是,这似乎效率很低而且不合Python。什么是做这样的更好的方法? 忘了提:该字符串可能无法启动,并最终和。他们之前和之后的字符可能更多。 问题答案: