Cara menentukan apakah substring berada dalam string yang berbeda


107

Saya memiliki sub-string:

substring = "please help me out"

Saya memiliki string lain:

string = "please help me out so that I could solve this"

Bagaimana cara mengetahui apakah substringmerupakan bagian dari stringpenggunaan Python?

Jawaban:


169

dengan in: substring in string:

>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True

10
Astaga, python terlalu kuat, saya pikir itu membutuhkan fungsi untuk melakukannya, tapi ini adalah
bawaan

Saya baru saja belajar JS setelah belajar Python, untuk ini Anda perlu menambahkan banyak pernyataan if else dan hal lainnya. Jadi, saya hanya ingin mengingatkan diri saya sendiri tentang bagaimana ini dilakukan dengan Python, jawaban ini membuat saya berkata pada diri sendiri 'Tentu saja!', Maksud saya hal-hal seperti ini di Python sangat sepele sehingga Anda tidak pernah memikirkannya! : P
Games Brainiac

@GamesBrainac Sebenarnya, untuk melakukan hal yang sama di JS itu hanya string.indexOf(substring) != -1, lebih di sini
LasagnaAndroid

Setelah Anda menemukan, ya ada substring dalam string, bagaimana Anda menemukan di posisi mana string itu, dan apa yang terjadi jika substring ada dalam string lebih dari sekali?
yoshiserry

@yoshiserry jika Anda ingin posisi substringdalam string, maka Anda ingin menggunakan string.index
MarcoS

21
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
    # do something

(Ngomong-ngomong - cobalah untuk tidak menamai variabel string, karena ada pustaka standar Python dengan nama yang sama. Anda mungkin membingungkan orang jika Anda melakukannya dalam proyek besar, jadi menghindari tabrakan seperti itu adalah kebiasaan yang baik.)


Tidak hanya membingungkan tetapi juga merusak semua referensi string setelah titik itu.
rplnt

13

Jika Anda mencari lebih dari True / False, Anda paling cocok untuk menggunakan modul re, seperti:

import re
search="please help me out"
fullstring="please help me out so that I could solve this"
s = re.search(search,fullstring)
print(s.group())

s.group() akan mengembalikan string "tolong bantu saya".


1
Kiat bagus tentang penelusuran ekspresi reguler.
Randall Cook

dengan nada yang lebih ringan. jika Anda mencoba menyelesaikan sesuatu dengan ekspresi reguler, Anda mencoba menyelesaikan dua masalah.
Hasan Iqbal

10

Pikir saya akan menambahkan ini jika Anda melihat bagaimana melakukan ini untuk wawancara teknis di mana mereka tidak ingin Anda menggunakan fungsi bawaan Python inatau find, yang mengerikan, tetapi memang terjadi:

string = "Samantha"
word = "man"

def find_sub_string(word, string):
  len_word = len(word)  #returns 3

  for i in range(len(string)-1):
    if string[i: i + len_word] == word:
  return True

  else:
    return False

2
Contoh yang bagus, tetapi identitas Anda salah. Dan untuk mempercepat, saya if len(substring) > len(string) return Falsejuga akan memeriksa rentang loop seharusnya range(len(string)-len(substring))karena Anda tidak akan menemukan kata tiga huruf dalam dua huruf terakhir dari string tersebut. (Menyimpan beberapa iterasi).
AnyOneElse

9

Orang-orang menyebutkan string.find(),, string.index()dan string.indexOf()di komentar, dan saya meringkasnya di sini (menurut Dokumentasi Python ):

Pertama-tama tidak ada string.indexOf()metode. Tautan yang diposting oleh Deviljho menunjukkan ini adalah fungsi JavaScript.

Kedua string.find()dan string.index()benar - benar mengembalikan indeks substring. Satu-satunya perbedaan adalah bagaimana mereka menangani substring tidak ditemukan situasi: string.find()mengembalikan -1sementara string.index()memunculkan ValueError.


5

Anda juga dapat mencoba metode find (). Ini menentukan apakah string str terjadi dalam string, atau dalam substring string.

str1 = "please help me out so that I could solve this"
str2 = "please help me out"

if (str1.find(str2)>=0):
  print("True")
else:
  print ("False")

1
In [7]: substring = "please help me out"

In [8]: string = "please help me out so that I could solve this"

In [9]: substring in string
Out[9]: True

1
def find_substring():
    s = 'bobobnnnnbobmmmbosssbob'
    cnt = 0
    for i in range(len(s)):
        if s[i:i+3] == 'bob':
            cnt += 1
    print 'bob found: ' + str(cnt)
    return cnt

def main():
    print(find_substring())

main()

temukan substring 'bob' dalam string tertentu.
avina k

0

Bisa juga menggunakan cara ini

if substring in string:
    print(string + '\n Yes located at:'.format(string.find(substring)))

0

masukkan deskripsi gambar di sini

Daripada Menggunakan find (), Salah satu cara mudahnya adalah dengan menggunakan 'in' seperti di atas.

jika 'substring' ada di 'str' maka jika bagian akan dieksekusi jika tidak, bagian lain akan dieksekusi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.