def _read_data_header_line(self, stream, expected_header):
pos = stream.tell()<EOL>expected_header = (<EOL>[expected_header] if isinstance(expected_header, str) else expected_header<EOL>)<EOL>for exp_hd in expected_header:<EOL><INDENT>tokens = stream.readline().split()<EOL>try:<EOL><INDENT>assert tokens[<NUM_LIT:0>] == exp_hd<EOL>return tokens[<NUM_LIT:1>:]<EOL><DEDENT>except AssertionError:<EOL><INDENT>stream.seek(pos)<EOL>continue<EOL><DEDENT><DEDENT>assertion_msg = "<STR_LIT>".format(<EOL>expected_header, tokens[<NUM_LIT:0>]<EOL>)<EOL>raise AssertionError(assertion_msg)<EOL>
Read a data header line, ensuring that it starts with the expected header

        Parameters
        ----------
        stream : :obj:`StreamIO`
            Stream object containing the text to read

        expected_header : str, list of strs
            Expected header of the data header line