def _parse_number(self, content):
        """
           Consume a number.
           If the number has a suffix, consume it also and instantiate the
            right type, e.g. for dates
           :param content str The content to consume
           :return: list The collected number and any remaining content.
        """
        length = len(content)
        collected = ''
        is_float = False
        i = 0
        for i in range(0, length):
            c = content[i]
            if c == '-' or self._is_numeric(c):
                collected += c
            elif c == '.':
                is_float = True
                collected += c
            elif c == 'E' and is_float:
                collected += c
            else:
                break

        content = content[i:]
        c = ''
        try:
            c = content[ 0 ]  # string index out of range 0
        except __HOLE__:
            pass

        if c == 'a':
            collected = date.fromtimestamp(float(collected) / 1000)
            content = content[1:]
        elif c == 't':
            # date
            collected = datetime.fromtimestamp(float(collected) / 1000)
            content = content[1:]
        elif c == 'f' or c == 'd':
            # float # double
            collected = float(collected)
            content = content[1:]
        elif c == 'c':
            collected = Decimal(collected)
            content = content[1:]
        elif c == 'b' or c == 's':
            collected = int(collected)
            content = content[1:]
        elif c == 'l':
            if sys.version_info[0] < 3:
                collected = long(collected)  # python 2.x long type
            else:
                collected = int(collected)
            content = content[1:]
        elif is_float:
            collected = float(collected)
        else:
            collected = int(collected)

        return [collected, content]
dataset/ETHPy150Open mogui/pyorient/pyorient/serializations.py/OrientSerializationCSV._parse_number