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?

cerah
sumber

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
MarcoS
sumber
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.)

Amber
sumber
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".

ewegesin
sumber
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
QueenJolene
sumber
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.

Samuel Li
sumber
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")
Abhishek Gupta
sumber
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
Fredrik Pihl
sumber
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()
avina k
sumber
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)))
jackotonye
sumber
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.

Dcoder14
sumber