2016-09-30 6 views
2

Я хочу изменить формат времени в некоторых текстовых строках с помощью регулярного выражения. Как использовать старые значения времени? Мой код до сих пор:Значение даты и времени реформата с регулярным выражением в текстовом файле

def file_replace_words(file_in, word_to_replace, replace_with): 
    f = open(file_in, "r+") 
    data = f.readlines() 
    f.seek(0) 
    for line in data: 
     line = re.sub(word_to_replace, replace_with, line) 
     f.write(line) 
    f.truncate() 
    f.close() 

f.file_replace_words(path_putty_log, r"(\d\d\/\d\d\/\d\d) - \d\d:\d\d:\d\d:\d\d\d", 
        "my time in format 31.12.1999 11:54:23") 

Я не хочу, чтобы изменить значения от 29/09/16 - 16: 38: 09: 808 в 29.09.16 16:38:09.

ответ

1

Вы можете добавить несколько дополнительных групп в ваше регулярное выражение и использовать шаблон замены с соответствующими обратными ссылками.

Использование

r'(\d\d)/(\d\d)/(\d\d) - (\d\d:\d\d:\d\d):\d{3}' 
    |- 1-| |- 2-| |-3 -| | ----- 4 ---- | 

и заменить r'\1.\2.\3 \4'.

См. regex demo.

ПРИМЕЧАНИЕ. Если есть более длинные подстроки, которые выглядят как эти штампы даты, вы можете приложить весь шаблон к границам слов \b: r'\b(\d\d)/(\d\d)/(\d\d) - (\d\d:\d\d:\d\d):\d{3}\b'.

 Смежные вопросы

  • Нет связанных вопросов^_^