Hướng dẫn dùng python string.contains python



Hàm find() trong Python xác định xem chuỗi str có xuất hiện trong chuỗi string hoặc chuỗi con đã cho của string (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end), nếu xuất hiện thì trả về chỉ mục của str, còn không thì trả về -1


Cú pháp

str.find(str, beg=0 end=len(string))

Chi tiết về tham số:

  • str: Xác định chuỗi để được tìm kiếm.

  • beg: Xác định chỉ mục bắt đầu, mặc định là 0.

  • end: Xác định chỉ mục kết thúc, mặc định là bằng độ dài chuỗi.



str1 = "Vi du \t ham find() trong Python";
str2 = "find";
print (str1.find(str2))
print (str1.find(str2, 10))
print (str1.find(str2, 20))

Kết quả là:





Hàm find() trong Python xác định xem chuỗi str có xuất hiện trong chuỗi string hoặc chuỗi con đã cho của string (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end), nếu xuất hiện thì trả về chỉ mục của str, còn không thì trả về -1


Cú pháp

str.find(str, beg=0 end=len(string))

Chi tiết về tham số:

  • str: Xác định chuỗi để được tìm kiếm.

  • beg: Xác định chỉ mục bắt đầu, mặc định là 0.

  • end: Xác định chỉ mục kết thúc, mặc định là bằng độ dài chuỗi.



str1 = "Vi du \t ham find() trong Python";
str2 = "find";
print (str1.find(str2))
print (str1.find(str2, 10))
print (str1.find(str2, 20))

Kết quả là:



Here is my code:

class a(object):
    d='ddd'
    def __contains__(self):
        if self.d:return True
b=a()
print b.contains('d')  # error
print contains(b,'d')  # error

Chris Martin

29.6k8 gold badges74 silver badges131 bronze badges

asked Dec 27, 2009 at 1:49

Like all special methods (with "magic names" that begin and end in __), __contains__ is not meant to be called directly (except in very specific cases, such as up=calls to the superclass): rather, such methods are called as part of the operation of built-ins and operators. In the case of __contains__, the operator in question is in -- the "containment check" operator.

With your class a as you present it (except for fixing your typo, and using True instead of true!-), and b as its instance, print 'x' in b will print True -- and so will any other containment check on b, since b always returns True (because self.d, a non-empty string, is true).

answered Dec 27, 2009 at 2:04

Alex MartelliAlex Martelli

821k163 gold badges1200 silver badges1377 bronze badges

to get your code to do something (although nothing useful):

class a(object):

    d = 'ddd'

    def __contains__(self, m):
        if self.d: 
            return True

b = a()

>>> 'd' in b
True

The docs.

Julius

7997 silver badges11 bronze badges

answered Dec 27, 2009 at 1:51

cobbalcobbal

68.9k19 gold badges142 silver badges155 bronze badges

__contains__ method defines how instances of class behave when they appear at right side of in and not in operator.

class Person(object):
      def __init__(self,name,age):
          self.name = name
          self.age = age
      def __contains__(self,param1):
          return True if param1 in self.__dict__.keys() else False

>>> p = Person('Robby Krieger',23)
>>> 'name' in p
True  

Azat Ibrakov

8,8669 gold badges37 silver badges45 bronze badges

answered Jan 1, 2013 at 9:33

vijay shankervijay shanker

2,3781 gold badge21 silver badges37 bronze badges

1

if self.d:return true

self.d is the string 'ddd'. Non-empty strings are always truthy: when you use if on 'ddd' it will always act as if you'd said if True:.

I think what you probably meant is:

def __contains__(self, item):
    return item in self.d

in is the operator that calls the __contains__ method behind the scenes.

answered Dec 27, 2009 at 1:56

bobincebobince

518k102 gold badges644 silver badges825 bronze badges

Lets see a very simple example of magic method __contains__ :

Suppose I have class Player and my __init__ method takes one string argument name. In main I have created an object (obj1) of class Player.

Now if I want to know if my obj1 (in this case attribute name of obj1) contains a particular string, substring or an alphabet, I have to implement __contains__ method as shown in the example.

If my class has __contains__ method I can call built-in operator in on my custom objects as shown in the example.

   class Player():

    def __init__(self, name):
        self.name=name

    def __contains__(self, substring):
        if substring in self.name:
            return True
        else:
            return False

obj1=Player("Sam")
print ('am' in obj1)    ----> True
print ('ami' in obj1)   ----> False

answered Jul 29, 2016 at 10:00

N RandhawaN Randhawa

7,9833 gold badges41 silver badges47 bronze badges

Not the answer you're looking for? Browse other questions tagged python or ask your own question.