Hướng dẫn how do you find the location of a substring in a string in python? - làm thế nào để bạn tìm thấy vị trí của một chuỗi con trong một chuỗi trong python?

Tôi có:

  • một chức năng:

    s = "Happy Birthday"
    s2 = "py"
    
    print(s.find(s2))
    
    5

  • và một chuỗi:

    s = "Happy Birthday"
    s2 = "py"
    
    print(s.find(s2))
    
    6,

Về cơ bản, tôi muốn nhập

s = "Happy Birthday"
s2 = "py"

print(s.find(s2))
7 và trả lại
s = "Happy Birthday"
s2 = "py"

print(s.find(s2))
8 nhưng tôi tiếp tục nhận được
s = "Happy Birthday"
s2 = "py"

print(s.find(s2))
9 để trở lại thay thế.

Code:

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"))

Không chắc có gì sai!

Hướng dẫn how do you find the location of a substring in a string in python? - làm thế nào để bạn tìm thấy vị trí của một chuỗi con trong một chuỗi trong python?

Lapriwa

1.7771 Huy hiệu vàng12 Huy hiệu bạc18 Huy hiệu đồng1 gold badge12 silver badges18 bronze badges

hỏi ngày 18 tháng 2 năm 2014 lúc 1:52Feb 18, 2014 at 1:52

1

Có một phương thức tích hợp tìm thấy trên các đối tượng chuỗi.

s = "Happy Birthday"
s2 = "py"

print(s.find(s2))

Python là một "ngôn ngữ bao gồm pin" có mã được viết để làm hầu hết những gì bạn muốn (bất cứ điều gì bạn muốn) .. trừ khi đây là bài tập về nhà :)

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"))
0 Trả về -1 Nếu không thể tìm thấy chuỗi.

Đã trả lời ngày 18 tháng 2 năm 2014 lúc 3:57Feb 18, 2014 at 3:57

Hướng dẫn how do you find the location of a substring in a string in python? - làm thế nào để bạn tìm thấy vị trí của một chuỗi con trong một chuỗi trong python?

3

Lý tưởng nhất là bạn sẽ sử dụng str.find hoặc str.index như hedgehog bị mất trí nhớ. Nhưng bạn đã nói rằng bạn không thể ... like demented hedgehog said. But you said you can't ...

Vấn đề của bạn là mã của bạn chỉ tìm kiếm cho ký tự đầu tiên của chuỗi tìm kiếm của bạn, trong đó (bản đầu tiên) là tại Index 2.

Về cơ bản, bạn đang nói nếu

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"))
1 là trong
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"))
2, tăng
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 cho đến khi
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"))
4 trả về 3 khi tôi thử nghiệm nhưng nó vẫn sai. Đây là một cách để làm điều đó.

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"))

Nó tạo ra đầu ra sau:

3
8
-1

Đã trả lời ngày 18 tháng 2 năm 2014 lúc 2:03Feb 18, 2014 at 2:03

Eric Fortineric FortinEric Fortin

7.4532 Huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu đồng2 gold badges24 silver badges33 bronze badges

4

Có một tùy chọn khác trong biểu thức chính quy, phương pháp

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"))
5

import re

string = 'Happy Birthday'
pattern = 'py'
print(re.search(pattern, string).span()) ## this prints starting and end indices
print(re.search(pattern, string).span()[0]) ## this does what you wanted

Nhân tiện, nếu bạn muốn tìm thấy tất cả sự xuất hiện của một mẫu, thay vì chỉ là mẫu đầu tiên, bạn có thể sử dụng phương thức

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"))
6

import re

string = 'i think that that that that student wrote there is not that right'
pattern = 'that'

print([match.start() for match in re.finditer(pattern, string)])

sẽ in tất cả các vị trí bắt đầu của các trận đấu.

Oren

4.0574 Huy hiệu vàng33 Huy hiệu bạc61 Huy hiệu Đồng4 gold badges33 silver badges61 bronze badges

Đã trả lời ngày 5 tháng 12 năm 2019 lúc 22:04Dec 5, 2019 at 22:04

Hướng dẫn how do you find the location of a substring in a string in python? - làm thế nào để bạn tìm thấy vị trí của một chuỗi con trong một chuỗi trong python?

Zyyzyyzyy

1.09912 Huy hiệu bạc24 Huy hiệu đồng12 silver badges24 bronze badges

Thêm vào câu trả lời của con nhím @demented khi sử dụng

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"))
7

Về mặt hiệu quảefficiency

Có thể đáng để kiểm tra trước tiên để xem S1 có ở S2 trước khi gọi

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"))
7 không. Điều này có thể hiệu quả hơn nếu bạn biết rằng hầu hết các lần S1 sẽ không phải là một nền tảng của S2
This can be more efficient if you know that most of the times s1 won't be a substring of s2

Vì toán tử

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"))
9 rất hiệu quả

 s1 in s2

Nó có thể hiệu quả hơn để chuyển đổi:

index = s2.find(s1)

đến

index = -1
if s1 in s2:
   index = s2.find(s1)

Điều này rất hữu ích khi

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"))
7 sẽ trở lại -1 rất nhiều.

Tôi đã tìm thấy nó nhanh hơn đáng kể kể từ khi

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"))
7 được gọi là nhiều lần trong thuật toán của tôi, vì vậy tôi nghĩ rằng nó đáng được đề cập

Đã trả lời ngày 14 tháng 6 năm 2019 lúc 15:46Jun 14, 2019 at 15:46

GerrygerryGerry

Phù hiệu bằng đồng 11166 bronze badges

Đây là một cách tiếp cận đơn giản:

my_string = 'abcdefg'
print(text.find('def'))

Output:

3

Tôi là chất nền không có ở đó, bạn sẽ nhận được -1. Ví dụ:-1. For example:

s = "Happy Birthday"
s2 = "py"

print(s.find(s2))
0

Output:

-1

Đôi khi, bạn có thể muốn ném ngoại lệ nếu không có chất nền:

s = "Happy Birthday"
s2 = "py"

print(s.find(s2))
1

Output:

Traceback (cuộc gọi gần đây nhất cuối cùng):

Tệp "test.py", dòng 6, in in (text.index ('xyz'))) print(text.index('xyz'))

ValueError: không tìm thấy chuỗi con

Đã trả lời ngày 17 tháng 5 năm 2020 lúc 14:10May 17, 2020 at 14:10

Hướng dẫn how do you find the location of a substring in a string in python? - làm thế nào để bạn tìm thấy vị trí của một chuỗi con trong một chuỗi trong python?

Ali Sajjadali SajjadAli Sajjad

2.68922 huy hiệu bạc34 huy hiệu đồng22 silver badges34 bronze badges

Cuối bữa tiệc, đã tìm kiếm giống nhau, vì "In" không hợp lệ, tôi vừa tạo ra sau.

s = "Happy Birthday"
s2 = "py"

print(s.find(s2))
2

sản xuất

3
8
-1

loại bỏ thấp hơn () trong trường hợp trường hợp không cần thiết không cần thiết.

Đã trả lời ngày 28 tháng 6 năm 2017 lúc 21:45Jun 28, 2017 at 21:45

ParthparthParth

Phim huy hiệu bạc 21711 silver badge8 bronze badges

Không trả lời trực tiếp câu hỏi nhưng gần đây tôi đã có một câu hỏi tương tự, nơi tôi được yêu cầu đếm số lần một chuỗi phụ được lặp lại trong một chuỗi nhất định. Đây là chức năng tôi đã viết:

s = "Happy Birthday"
s2 = "py"

print(s.find(s2))
4

Hàm Find () có thể chỉ trả về chỉ số của nắm tay. Lưu trữ chỉ mục thay cho chỉ đếm, có thể cung cấp cho chúng ta bộ chỉ số riêng biệt mà chuỗi phụ được lặp lại trong chuỗi.

Tuyên bố miễn trừ trách nhiệm: Tôi là 'cực đoan' mới đối với lập trình Python.

Đã trả lời ngày 24 tháng 5 năm 2018 lúc 21:21May 24, 2018 at 21:21

Làm thế nào để tôi tìm thấy vị trí của một chuỗi con trong Python?

Phương thức Find () chuỗi Python trả về chỉ số thấp nhất hoặc lần xuất hiện đầu tiên của chuỗi con nếu nó được tìm thấy trong một chuỗi nhất định.Nếu nó không được tìm thấy, thì nó sẽ trả về -1. returns the lowest index or first occurrence of the substring if it is found in a given string. If it is not found, then it returns -1.

Làm thế nào để bạn tìm thấy vị trí của một chuỗi con trong một chuỗi?

Phương thức indexof () trả về vị trí của sự xuất hiện đầu tiên của (các) ký tự được chỉ định trong một chuỗi.Mẹo: Sử dụng phương thức LastIndexof để trả về vị trí của lần xuất hiện cuối cùng của (các) ký tự được chỉ định trong một chuỗi.. Tip: Use the lastIndexOf method to return the position of the last occurrence of specified character(s) in a string.

Làm thế nào để bạn tìm thấy vị trí của một từ trong một câu trong Python?

Phương thức số 1: Sử dụng re.findall () + index () Đây là một trong những cách mà chúng ta có thể tìm thấy vị trí nơi từ tồn tại.Trong đó, chúng tôi tìm kiếm mẫu chuỗi con bằng cách sử dụng findall () và vị trí của nó bằng index ().Using re. findall() + index() This is one of the way in which we can find the location where word exists. In this we look for substring pattern using findall() and its position using index().