gpt4 book ai didi

python 3 正则表达式模式替换

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:45 25 4
gpt4 key购买 nike

我有一个格式错误的 csv 文件,我需要修复它:

  • 该文件应该每行一条记录,但由于格式问题,它有一个 MS-DOS 换行符 (^M)。
  • 更糟糕的是,CSV 文件的最后一个字段是一个文本字段,它还包含这个 MS-DOS 换行符,所以我不能简单地替换 ^M 字符。
  • 但好消息是文件的第一个字段是 DATE 字段 (MM/DD/YY)

所以我尝试用 (\rMM/DD/YY) 替换 (\r\nMM/DD/YY) 模式,但它没有用。这是我的代码片段:

fixed_content = re.sub(r"""\r\n\d{2})/\d{2}/\d{2}""", r"""\r\1/\2/\3""", malformed_content)

我的问题是:

  1. 我不知道如何将 ^M 字符表示为模式。我用了\r\n
  2. 我不知道如何在新的替换模式中引用以前的匹配项。我使用 \1 作为第一个 MM 模式,\2 作为下一个 DD 模式,\3 最后一个 YY 模式。

最佳答案

要匹配 DD/MM/YY 形式的日期字符串,您可以使用以下正则表达式:

 \d{2}\/\d{2}\/\d{2}

如果你想backreference匹配的字符串,你必须把它放在方括号 (...) 之间,像这样:

 (\d{2}\/\d{2}\/\d{2})

整个替换命令将变为:

fixed_content = re.sub(r"""\r\n(\d{2}\/\d{2}\/\d{2})""", r"""\r\1""", malformed_content)

请注意,我对反斜杠 \/ 进行了转义,因为有时需要这样做(在反斜杠用作匹配/替换字符串之间的分隔符的情况下)。修改以满足您的需求。

关于python 3 正则表达式模式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com