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?

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

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


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.


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

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.


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

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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.