【问题标题】:Reformat datetime value with regex in a textfile在文本文件中使用正则表达式重新格式化日期时间值
【发布时间】:2016-09-30 08:13:46
【问题描述】:

我想使用正则表达式更改某些文本行中的时间格式。 如何使用旧的时间值? 到目前为止我的代码:

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。

【问题讨论】:

    标签: python regex datetime reformatting


    【解决方案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' 将整个模式括起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-15
      • 2020-09-14
      • 2019-08-05
      • 2017-09-29
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      相关资源
      最近更新 更多