<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _init_hdr(self, line, hdrs_usr):
 """Initialize self.hdr2idx, self.len, self.idxs_float, and self.idxs_int"""

        self.hdr2idx = OrderedDict([(v.strip(), i) for i, v in enumerate(re.split(self.sep, line))])
        self.len = len(self.hdr2idx)
        # If user is requesting specific data fields...
        if hdrs_usr is not None:
            # Loop through the user headers
            for usr_hdr in hdrs_usr:
                # If the user header is contained in the file....
                if usr_hdr in self.hdr2idx:
                    # Add the user header and the field index to a list
                    self.hdrs_usr.append([usr_hdr, self.hdr2idx[usr_hdr]])
                else:
                    raise Exception("NO COLUMN({}) FOUND:\n  HDR={}\n".format(
                        hdrs_usr, '\n  HDR='.join(self.hdr2idx.keys())))
        usr_hdrs = [E[0] for E in self.hdrs_usr] if self.hdrs_usr else self.hdr2idx
        self._init_idxs_float(usr_hdrs)
        self._init_idxs_int(usr_hdrs)
        self._init_idxs_strpat(usr_hdrs)
        self.usr_max_idx = max(E[1] for E in self.hdrs_usr) if self.hdrs_usr else len(self.hdr2idx)-1