Bagaimana saya bisa menemukan kejadian pertama dari sub-string dalam string python?

123

Jadi jika string saya adalah "pria itu keren".
Saya ingin mencari indeks pertama dari 'dude':

mystring.findfirstindex('dude') # should return 4

Apa perintah python untuk ini?
Terima kasih.

foreyez
sumber

Jawaban:

213

find()

>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
mechanical_meat
sumber
20
Ia kembali -1jika tidak ditemukan
Christophe Roussy
bagaimana jika saya ingin mencari kata isdari kalimat tersebut this is a cool dude? Saya mencoba metode find tetapi mengembalikan indeks 2, bukan 5. Bagaimana cara mencapai ini menggunakan find ()?
Regressor
@Regressor: perhatikan batasan regex dan kata.
mechanical_meat
28

Ikhtisar Cepat: indexdanfind

Di samping findmetode ada juga index. finddan indexkeduanya menghasilkan hasil yang sama: mengembalikan posisi kejadian pertama, tetapi jika tidak ada yang ditemukan indexakan meningkatkan pengembalian ValueErrorsementara . Secara speedwise, keduanya memiliki hasil benchmark yang sama.find-1

s.find(t)    #returns: -1, or index where t starts in s
s.index(t)   #returns: Same as find, but raises ValueError if t is not in s

Pengetahuan tambahan: rfinddan rindex:

Secara umum, temukan dan indeks mengembalikan indeks terkecil tempat string yang diteruskan dimulai, dan rfinddan rindexmengembalikan indeks terbesar tempat dimulai. Sebagian besar algoritme pencarian string mencari dari kiri ke kanan , sehingga fungsi yang dimulai dengan rmenunjukkan bahwa pencarian terjadi dari kanan ke kiri .

Jadi jika kemungkinan elemen yang Anda cari mendekati akhir daripada di awal daftar, rfindatau rindexakan lebih cepat.

s.rfind(t)   #returns: Same as find, but searched right to left
s.rindex(t)  #returns: Same as index, but searches right to left

Sumber: Python: Panduan Memulai Cepat Visual, Toby Donaldson

pengguna1767754
sumber
jika string didefinisikan sebagai input_string = "this is a sentence"dan jika kita ingin menemukan kemunculan pertama dari kata tersebut is, apakah itu akan berhasil? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
Regresor
1

untuk mengimplementasikan ini dengan cara algoritmik, dengan tidak menggunakan fungsi bawaan python. Ini dapat diimplementasikan sebagai

def find_pos(string,word):

    for i in range(len(string) - len(word)+1):
        if string[i:i+len(word)] == word:
            return i
    return 'Not Found'

string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4
sahasrara62
sumber
0
def find_pos(chaine,x):

    for i in range(len(chaine)):
        if chaine[i] ==x :
            return 'yes',i 
    return 'no'
Benmadani Yazid
sumber
6
Sepertinya indentasi Anda tidak aktif dan Anda lupa menutup tanda kutip Anda. Penjelasan kode Anda dan mengapa itu akan menyelesaikan masalah juga membantu; lihat Bagaimana Menjawab
camille
maaf saya mengeditnya ... kode saya menemukan kemunculan pertama surat dalam string dan mengembalikan tempatnya
Benmadani Yazid
0

verse = "Jika kamu bisa menjaga kepalamu ketika semua tentang kamu \ n Kehilangan pikiran mereka dan menyalahkanmu, \ nJika kamu dapat mempercayai dirimu sendiri ketika semua orang meragukanmu, \ n Tapi berikan kelonggaran atas keraguan mereka juga; \ nJika kamu bisa menunggu dan jangan lelah dengan menunggu, \ n Atau dibohongi, jangan berbohong, \ nAtau dibenci, jangan menyerah pada kebencian, \ n Namun jangan terlihat terlalu baik, atau bicara terlalu bijak : "

enter code here

print(verse)
#1. What is the length of the string variable verse?
verse_length = len(verse)
print("The length of verse is: {}".format(verse_length))
#2. What is the index of the first occurrence of the word 'and' in verse?
index = verse.find("and")
print("The index of the word 'and' in verse is {}".format(index))
Abideen Muhammad
sumber
Selamat datang di Stack Overflow. Anda menjawab pertanyaan lama dan sudah terjawab (jawab dengan tanda centang hijau) tanpa memberikan informasi lebih lanjut atau penjelasan yang lebih baik. Jadi pada dasarnya ini hanya menduplikasi jawaban yang diterima . Lihat Bagaimana cara menulis jawaban yang baik? . (Dan untuk referensi lebih lanjut, lihat Bagaimana menangani pembersihan akhir jawaban duplikat terang-terangan ('berselancar') pada pertanyaan populer ).
Ivo Mori