![](/img/trans.png)
[英]Python datetime isoformat - count days until bithday from string - convert into 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.