You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何查找字符串内datetime片段并批量为其添加单引号

Python实现给字符串中datetime调用片段加单引号的方案

场景示例

输入字符串:

{'Y': [('A', 'X', datetime.datetime(2022, 3, 20, 22, 58, 30, 128000))]}

期望输出:

{'Y': [('A', 'X', 'datetime.datetime(2022, 3, 20, 22, 58, 30, 128000)')]}

要求适配字符串中存在多个datetime.datetime(...)片段的场景。

最优实现

用正则表达式全局匹配替换即可,代码简洁、性能高,不需要做复杂的语法树解析:

import re

def wrap_datetime_with_quotes(raw_str: str) -> str:
    # 正则匹配所有datetime.datetime(xxx)格式片段,非贪婪匹配避免跨段匹配
    return re.sub(r"(datetime\.datetime\(.*?\))", r"'\1'", raw_str)

# 多片段场景测试
raw = "{'Y': [('A', 'X', datetime.datetime(2022, 3, 20, 22, 58, 30, 128000)), ('B', 'Z', datetime.datetime(2023, 1, 1, 0, 0, 0))]}"
print(wrap_datetime_with_quotes(raw))
# 输出:{'Y': [('A', 'X', 'datetime.datetime(2022, 3, 20, 22, 58, 30, 128000)'), ('B', 'Z', 'datetime.datetime(2023, 1, 1, 0, 0, 0)')]}

说明

  • 正则中\.用于转义匹配点号,.*?是非贪婪匹配,会匹配到离起始位置最近的闭合右括号,不会出现多个datetime片段时匹配过长的问题
  • 常规序列化生成的这类字符串中,datetime构造参数都是数字、逗号,不存在嵌套括号,上面的方案完全覆盖需求
  • 如果极端场景下datetime参数内存在嵌套括号,可以自行实现括号计数的匹配逻辑,常规业务场景下正则方案的开发成本、运行效率都是最优的

内容的提问来源于stack exchange,提问作者anshuk_pal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:09:24