title: AttributeError: 'NoneType' object has no attribute 'lower' python
body: <p>My abc.txtfile looks like this</p>
  
  <pre><code>Mary    Kom     28 F
  Emon    Chatterje  32 M
  Sunil   Singh  35 M
  </code></pre>
  
  <p>Now i am getting the desired result with the following traceback:Please help me out. I am not getting where am i going wrong</p>
  
  <pre><code>Enter for Search Criteria
  1.FirstName  2.LastName  3.Age  4.Gender  5.Exit 1
  Enter FirstName :m
  Mary Kom 28 F
  Emon Chatterje 32 M
  Traceback (most recent call last):
   File "testcode.py", line 50, in &lt;module&gt;
      if (records.searchFName(StringSearch)):
    File "testcode.py", line 12, in searchFName
      return matchString.lower() in self.fname.lower()
   AttributeError: 'NoneType' object has no attribute 'lower'
  </code></pre>
  
  <p>My Code:</p>
  
  <pre><code>#!usr/bin/python
  import sys
  
  class Person:
      def __init__(self, firstname=None, lastname=None, age=None, gender=None):
          self.fname = firstname
          self.lname = lastname
          self.age = age
          self.gender = gender
      def searchFName(self, matchString):
  
          return matchString.lower() in self.fname.lower()
  
      def searchLName(self, matchString):
  
          return matchString.lower() in self.lname.lower()
  
      def searchAge(self, matchString):
  
          return str(matchString) in self.age
  
      def searchGender(self, matchString):
  
          return matchString.lower() in self.gender.lower()
  
      def display(self):
  
          print self.fname, self.lname, self.age, self.gender
  
  
  f= open("abc","r")
  list_of_records = [Person(*line.split()) for line in f]
  f.close()
  found = False
  n=0
  
  n1 = raw_input("Enter for Search Criteria\n1.FirstName  2.LastName  3.Age  4.Gender      5.Exit " )
  
  if n1.isdigit():
      n = int(n1)
  else:
      print "Enter Integer from given"
      sys.exit(1)
  if n == 0 or n&gt;5:
      print "Enter valid search "
  if n == 1:
      StringSearch = raw_input("Enter FirstName :")
      for records in list_of_records:
          if (records.searchFName(StringSearch)):
              found = True
              records.display()
  
      if not found:
          print "No matched record"
  
  if n == 2:
      StringSearch = raw_input("Enter LastName :")
      for records in list_of_records:
          if records.searchLName(StringSearch):
              found = True
              records.display()
  
     if not found:
          print "No matched record"
  
  if n == 3:
      StringSearch = raw_input("Enter Age :")
      if (StringSearch.isdigit()):
          StringSearch1 = int(StringSearch)
      else:
          print "Enter Integer"
          sys.exit()
      for records in list_of_records:
          if records.searchAge(StringSearch):
              found = True
          records.display()
  
      if not found:
          print "No matched record"
  
  if n == 4:
      StringSearch = raw_input("Enter Gender(M/F) :")
      for records in list_of_records:
          if records.searchGender(StringSearch):
             found = True
             records.display()
      if not found:
          print "No matched record"
  
  if n == 5:
      sys.exit(1)
  </code></pre>
  
  <p>Please help solve my problrm to where am i going wrong ??</p>