Python конвертация нескольких форматов даты и времени - PullRequest
0 голосов
/ 27 октября 2019

У меня есть скрипт, который анализирует некоторые журналы, и он имеет функцию, которая принимает строку и возвращает объект datetime, он обычно работает либо со строкой пользовательского ввода, которую пользователь ввел в CLI, либо с отметкой времени из записи в файле журнала (деформацияcase):

def str2datetime(string, warp=False):
    """
    takes a string and returns a time object format. Used by common_functions.range2datetime  
    """
    if warp:
        return datetime.datetime.strptime(string, '%Y-%m-%dT%H:%M:%S')

    current_year = str(datetime.datetime.now().year)

    tuple_of_formats = ('%Y-%m-%dT%H:%M:%S', '%Y-%m-%dT%H:%M', '%Y-%m-%dT%H', '%Y-%m-%dT',
                        '%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M', '%Y-%m-%d %H', '%Y-%m-%d',
                        '%Y %m %d %H:%M:%S', '%Y %m %d %H:%M', '%Y %m %d %H', '%Y %m %d',
                        '%Y-%b-%d %H:%M:%S', '%Y-%b-%d %H:%M', '%Y-%b-%d %H', '%Y-%b-%d',
                        '%Y %b %d %H:%M:%S', '%Y %b %d %H:%M', '%Y %b %d %H', '%Y %b %d')
    # user can input the time in different formats and even without a year, if this is a case year = current year
    for string in (current_year + ' ' + string, string):
        for tuple_of_format in tuple_of_formats:
            try:
                return datetime.datetime.strptime(string, tuple_of_format)
            except ValueError:
                pass

регистр деформации работал очень хорошо для обычных журналов, которые имеют временную метку в формате ISO, такую ​​как «2019-01-01T14: 20: 07», но недавно наш разработчик. команды изменили формат метки времени в журнале, и теперь он выглядит так: «19-01-01 14: 36: 37.703». Теперь мне нужно изменить строку, переданную в функцию, с [0:19] (она удовлетворяет формату деформации) на [0:17], а также изменить формат на «% y-% m-% d% H:%M:% S '.

Я мог бы попытаться использовать тот же метод, который я использовал для строк ввода пользователя, но это может повлиять на производительность скрипта (он обрабатывает сотни мегабайт журналов и даже несколько дополнительных форматов при попытке)/ кроме добавляет задержку обработки). Можно ли это как-то улучшить, чтобы сначала определить, какой формат используется, затем придерживаться его, и если в какой-то момент есть много записей журнала, которые используют другой формат, затем переключиться на этот формат и снова придерживаться его?

Благодарю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...