So bestimmen Sie, ob sich ein Teilstring in einer anderen Zeichenfolge befindet

107

Ich habe eine Unterzeichenfolge:

substring = "please help me out"

Ich habe eine andere Zeichenfolge:

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

Wie finde ich heraus, ob substringes sich um eine Teilmenge der stringVerwendung von Python handelt?

sonnig
quelle

Antworten:

169

mit 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
quelle
10
Meine Güte, Python ist zu stark, ich dachte, es braucht eine Funktion, um es zu tun, aber es ist ein
eingebautes
Ich habe gerade JS gelernt, nachdem ich Python gelernt hatte. Dazu müssten Sie eine Menge if else-Anweisungen und andere Dinge hinzufügen. Ich wollte mich nur daran erinnern, wie es in Python gemacht wurde. Diese Antwort brachte mich dazu, mir selbst zu sagen: "Natürlich!" Ich meine, solche Dinge in Python sind so trivial, dass man ihnen nie viel Gedanken macht! : P
Spiele Brainiac
@GamesBrainiac Um dasselbe in JS zu tun, ist es nur string.indexOf(substring) != -1mehr hier
LasagnaAndroid
Wenn Sie gefunden haben, dass in der Zeichenfolge ein Teilstring vorhanden ist, wie finden Sie an welcher Position sich der String befindet und was passiert, wenn sich der Teilstring mehr als einmal in der Zeichenfolge befindet?
Yoshiserry
@yoshiserry Wenn Sie die Position von substringin wollen string, dann wollen Sie string.index
MarcoS
21
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
    # do something

(Übrigens: Versuchen Sie, keine Variable zu benennen string, da es eine Python-Standardbibliothek mit demselben Namen gibt. Sie können die Leute verwirren, wenn Sie dies in einem großen Projekt tun. Daher ist es eine gute Angewohnheit, solche Kollisionen zu vermeiden.)

Bernstein
quelle
Nicht nur verwirren, sondern auch alle Referenzzeichenfolgen nach diesem Punkt brechen.
9.
13

Wenn Sie mehr als ein Richtig / Falsch suchen, sind Sie am besten für die Verwendung des Re-Moduls geeignet, z. B.:

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() wird die Zeichenfolge "Bitte helfen Sie mir" zurückgeben.

ewegesin
quelle
1
Guter Tipp zur Suche nach regulären Ausdrücken.
Randall Cook
auf eine leichtere Note. Wenn Sie versuchen, etwas mit regulären Ausdrücken zu lösen, versuchen Sie, zwei Probleme zu lösen.
Hasan Iqbal
10

Ich dachte, ich würde dies hinzufügen, falls Sie sich überlegen, wie Sie dies für ein technisches Interview tun sollen, bei dem Sie nicht die integrierte Funktion von Python verwenden sollen inoder find, was schrecklich ist, aber passiert:

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
Königin Jolene
quelle
2
Schönes Beispiel, aber Ihre Identifikation ist falsch. Und um die Sache zu beschleunigen, würde ich auch überprüfen, ob if len(substring) > len(string) return Falseder Schleifenbereich besser sein sollte, range(len(string)-len(substring))da Sie in den letzten beiden Buchstaben der Zeichenfolge kein Wort mit drei Buchstaben finden. (Speichert einige Iterationen).
AnyOneElse
9

Menschen erwähnten string.find(), string.index()und string.indexOf()in den Kommentaren und ich sich hier zusammenfassen (nach der Python - Dokumentation ):

Erstens gibt es keine string.indexOf()Methode. Der von Deviljho gepostete Link zeigt, dass dies eine JavaScript-Funktion ist.

Zweitens die string.find()undstring.index() tatsächlich den Index eines Teilstrings zurück. Der einzige Unterschied besteht darin, wie sie mit der nicht gefundenen Teilzeichenfolge umgehen: Gibt string.find()zurück, -1während eine string.index()ausgelöst wird ValueError.

Samuel Li
quelle
5

Sie können auch die Methode find () ausprobieren. Es bestimmt, ob der String str in einem String oder in einem Teilstring eines Strings vorkommt.

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
quelle
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
quelle
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
quelle
Finden Sie die Teilzeichenfolge 'bob' in einer bestimmten Zeichenfolge.
Avina k
0

Kann auch diese Methode verwenden

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

Geben Sie hier die Bildbeschreibung ein

Anstatt find () zu verwenden, ist eine der einfachen Möglichkeiten die Verwendung von 'in' wie oben.

Wenn 'Teilzeichenfolge' in 'str' vorhanden ist, wird ein Teil ausgeführt, andernfalls wird ein Teil ausgeführt.

Dcoder14
quelle