substring string auf - Verfügt Python über eine Zeichenfolge, die eine Zeichenfolge enthält?





7 Answers

Wenn es sich nur um eine string.find("substring") können Sie string.find("substring") .

Sie müssen ein wenig vorsichtig mit find , index und in , da sie Teilstringsuchen sind. Mit anderen Worten:

s = "This be a string"
if s.find("is") == -1:
    print "No 'is' here!"
else:
    print "Found 'is' in the string."

Es würde " Found 'is' in the string. drucken Found 'is' in the string. if "is" in s: würde dies ebenfalls als " True if "is" in s: ausgewertet werden. Dies kann oder nicht das sein, was Sie wollen.

prüfen contains durchsuchen

Ich suche nach einer string.contains oder string.indexof Methode in Python.

Ich will das tun:

if not somestring.contains("blah"):
   continue



Grundsätzlich möchten Sie eine Teilzeichenfolge in einer Zeichenfolge in Python suchen. Es gibt zwei Möglichkeiten, in Python nach einem Teilstring in einem String zu suchen.

Methode 1: in Operator

Sie können den in Operator von Python's verwenden, um nach einer Teilzeichenfolge zu suchen. Es ist ganz einfach und intuitiv. Es wird True wenn die Teilzeichenfolge in der Zeichenfolge gefunden wurde, sonst False .

>>> "King" in "King's landing"
True

>>> "Jon Snow" in "King's landing"
False

Methode 2: str.find() -Methode

Die zweite Methode ist die Verwendung der str.find() -Methode. Hier rufen wir die .find() -Methode für die Zeichenfolge auf, in der die .find() gefunden werden soll. Wir übergeben den Teilstring an die find () - Methode und prüfen den Rückgabewert. Wenn der Wert nicht -1 ist, wurde die Teilzeichenfolge in der Zeichenfolge gefunden, andernfalls nicht. Der zurückgegebene Wert ist der Index, in dem die Teilzeichenfolge gefunden wurde.

>>> some_string = "valar morghulis"

>>> some_string.find("morghulis")
6

>>> some_string.find("dohaeris")
-1

Ich würde Ihnen empfehlen, die erste Methode zu verwenden, da diese mehr Pythonic und intuitiver ist.




Nein, es gibt keine string.contains(str) -Methode, aber es gibt den in Operator:

if substring in someString:
    print "It's there!!!"

Hier ist ein komplexeres Arbeitsbeispiel:

# Print all files with dot in home directory
import commands
(st, output) = commands.getstatusoutput('ls -a ~')
print [f for f in output.split('\n') if '.' in f ]



Es gibt also anscheinend nichts Vergleichbares für den vektoriellen Vergleich. Eine naheliegende Python-Methode wäre:

names = ['bob', 'john', 'mike']
any(st in 'bob and john' for st in names) 
>> True

any(st in 'mary and jane' for st in names) 
>> False



In Python gibt es zwei einfache Möglichkeiten, dies zu erreichen:

Der pythonische Weg: Verwenden von Python's 'in' Keyword-

in nimmt zwei "Argumente", eines links ( Teilstring ) und eines rechts, und gibt " True wenn das linke Argument im Argument "Rightside" enthalten ist. Wenn nicht, wird " False .

example_string = "This is an example string"
substring = "example"
print(substring in example_string)

Ausgabe:

True

Der nicht-pythonische Weg: Pythons str.find verwenden:

Die find Methode gibt die Position der Zeichenfolge innerhalb der Zeichenfolge zurück oder -1, wenn sie nicht gefunden wird. Prüfen Sie einfach, ob die Position nicht -1 ist.

if example_string.find(substring) != -1:
    print('Substring found!')
else:
    print('Substring not found!')

Ausgabe:

Substring found!



Hier ist deine Antwort:

if "insert_char_or_string_here" in "insert_string_to_search_here":
    #DOSTUFF

Um zu überprüfen, ob es falsch ist:

if not "insert_char_or_string_here" in "insert_string_to_search_here":
    #DOSTUFF

ODER:

if "insert_char_or_string_here" not in "insert_string_to_search_here":
    #DOSTUFF



Wenn Sie nach Groß- und Kleinschreibung suchen, suchen Sie nach ganzen Wörtern und nicht nach einem in einem anderen Wort enthaltenen Teilstring:

import string

s = 'This is my text example'
if 'is' not in (word.lower() 
    for split_char in string.punctuation + string.whitespace 
    for word in s.split(split_char)):
    # do something



Related