code: def parse_content(self, content):
          
          self.rows = []
          if len(content) < 2:
              self.no_data = True
              return
  
          # Parse header, remembering column numbers for data capture.  We use
          # a finditer to get the positions, and we find by field rather than
          # splitting on three or more spaces because of this.
          headers = []
          field_re = re.compile(r'\w+(\s\w+)*')
          for match in field_re.finditer(content[0]):
              headers.append({'name': match.group(), 'start': match.start()})
  
          # Parse the rest of the line.  Each field starts at the column
          # given by the header and ends with at least three spaces.
          for line in content[1:]:
              # I think the dictionary comprehension version of this is too
              # complicated for words :-)
              row = {}
              for header in headers:
                  value = line[header['start']:].split('   ', 1)[0]
                  if value == '':
                      value = None
                  row[header['name']] = value
              self.rows.append(row)
  
          # If we have a key_field set, construct a data dictionary on it.
          # Note that duplicates will be overwritten, but we ignore '<none>'.
          if self.key_field and self.key_field in self.rows[0]:
              self.data = {}
              for row in self.rows:
                  k = row[self.key_field]
                  if k is not None and k != '<none>':
                      self.data[k] = row
docs: Parse the lines given into a list of dictionaries for each row.  This
          is stored in the ``rows`` attribute.
  
          If the ``key_field`` property is set, use this to key a ``data``
          dictionary attribute.