<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_content(self, content):
 """ 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. """

        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