繁体   English   中英

Python 正则表达式从字符串解析 datetime.datetime object

[英]Python regex to parse the datetime.datetime object from string

我有以下字符串:

"{'foo': datetime.datetime(2022, 5, 23, 0, 0, tzinfo=tzlocal()), 'bar': 'some data', 'foobar': datetime.datetime(2022, 8, 3, 13, 57, 41, tzinfo=<UTC>), 'barlist': ['hello', 'world']}"

我希望能够匹配此字符串中的所有datetime.datetime(...)字符串,并仅将其替换为列表形式的数字。 所以这是预期的结果:

"{'foo': [2022, 5, 23, 0, 0], 'bar': 'some data', 'foobar': [2022, 8, 3, 13, 57, 41], 'barlist': ['hello', 'world']}"

我有这样的事情:

DATETIME_PATTERN = r"datetime.datetime\(((\d+)(,\s*\d+)*), tzinfo=.*\)"
modified_input_str = re.sub(DATETIME_PATTERN, r"[\1]", input_str)

但它取代了比赛之间的大量数据。 如何修改正则表达式来完成我想要的?

结论:我对当前最佳答案进行了修改,使其更适合我的特定用例:

DATETIME_PATTERN = r"datetime\.datetime\((\d+(?:,\s*\d+)*), tzinfo=(?:[^\s\d])*\)"

# The difference is that the string at the end of 'tzinfo=' can be anything but whitespace or numbers.

您可以使用

datetime\.datetime\((\d+(?:,\s*\d+)*), tzinfo=(?:\(\)|[^()])*\)

详情

  • datetime\.datetime\( - 一个datetime.datetime(字符串
  • (\d+(?:,\s*\d+)*) - 第 1 组:一个或多个数字,然后零个或多个逗号重复 + 零个或多个空格,然后一个或多个数字
  • , tzinfo= - 文字字符串
  • (?:\(\)|[^()])* - ()字符串或除()以外的任何字符的零次或多次重复
  • \) - a )字符。

请参阅正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM