web-dev-qa-db-fra.com

chaîne unicode équivalente à contenir

J'ai une erreur lorsque j'essaie d'utiliser contain en python.

s = u"some utf8 words"
k = u"one utf8 Word"

if s.contains(k):
    print "contains" 

Comment obtenir le même résultat?

Exemple avec une chaîne normale ASCII

s = "haha i am going home"
k = "haha"

if s.contains(k):
    print "contains"

J'utilise python 2.7.x

18
aceminer

De même pour les chaînes ascii et utf8:

if k in s:
    print "contains" 

Il n'y a pas de contains() sur les chaînes ascii ou uft8:

>>> "strrtinggg".contains
AttributeError: 'str' object has no attribute 'contains'

Ce que vous pouvez utiliser à la place de contains est find ou index:

if k.find(s) > -1:
    print "contains"

ou

try:
    k.index(s)
except ValueError:
    pass  # ValueError: substring not found
else:
    print "contains"

Mais bien sûr, l'opérateur in est le chemin à parcourir, il est beaucoup plus élégant.

33
frnhr

Il n'y a pas de différence entre str et unicode.

print u"ábc" in u"some ábc"
print "abc" in "some abc"

est fondamentalement la même.

8
Daniel

Les chaînes n'ont pas d'attribut "contain".

s = "haha i am going home"
s_new = s.split(' ')
k = "haha"

if k in s_new:
    print "contains"

Je suppose que tu veux y arriver

5
Ajay