Hat Python eine Zeichenkette 'contains' substring method?



5 Answers

Wenn es nur eine Teilstringsuche ist, können Sie string.find("substring") .

Sie müssen mit find , index und in ein wenig vorsichtig sein, da es sich um Teilstringsuchen handelt. 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. gedruckt werden Found 'is' in the string. Ähnlich, if "is" in s: würde zu True auswerten. Dies kann oder kann nicht sein, was Sie wollen.

Question

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

Ich will das tun:

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



Wenn Sie nach Groß- und Kleinschreibung suchen, statt nach einer Teilzeichenfolge, die in einem anderen Wort enthalten ist:

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



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

Methode 1: in Operator

Sie können den Operator in in Python verwenden, um nach einem Teilstring zu suchen. Es ist ziemlich einfach und intuitiv. Es wird True wenn die Teilzeichenfolge in der Zeichenfolge 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 Methode str.find() . Hier rufen wir die Methode .find() für die Zeichenfolge auf, in der die .find() gefunden werden soll. Wir übergeben die Teilzeichenfolge an die Methode find () und überprüfen ihren 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 dir empfehlen, die erste Methode zu verwenden, da es pythonischer und intuitiver ist.




Für einen vektoriellen Vergleich scheint es also nichts Ähnliches zu geben. Ein naheliegender Python-Weg 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: Mit Pythons 'in' Keyword-

in nimmt zwei "Argumente", eins auf der linken Seite ( Teilzeichenfolge ) und eins auf der rechten Seite, und gibt True wenn das linke Argument innerhalb des rechten Arguments enthalten ist und wenn nicht, gibt es False .

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

Ausgabe:

True

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

Die Methode find gibt die Position der Zeichenfolge in der Zeichenfolge oder -1 zurück, wenn sie nicht gefunden wird. Aber überprüfe einfach, ob die Position nicht -1 ist.

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

Ausgabe:

Substring found!



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

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 ]





Related