gpt4 book ai didi

Python正则表达式替换数字-1

转载 作者:行者123 更新时间:2023-12-04 07:49:23 24 4
gpt4 key购买 nike

我正在尝试将字符串转换为正确的 JSON 表示法。这个字符串得到了一些正确的索引(用 [idx] )和一些不正确的索引(用点表示法 .idx. ,最后一个从 1 开始,而不是从 0 开始)。无论如何使用python“处理”捕获的组re图书馆或类似的?
这就是我所拥有的:

import re

a = "a.[0].b.1.c"
re.sub(r'\.(\d)\.', r'.[\1].', a) # Which provides: 'a.[0].b.[1].c'
我要它给我 'a.[0].b.[0].c' ,但我不知道如何对捕获的组进行操作 $1 .是否可以?

最佳答案

re.sub 的替换参数可以是一个函数,并且该函数会传递匹配对象,您可以在该对象上执行操作:

def replacer(mo):
captured_group = mo.group(1)
one_subtracted = str(int(captured_group) - 1)
to_replace = ".[" + one_subtracted + "]."
return to_replace
并使用:
>>> re.sub(r"\.(\d)\.", replacer, a)
'a.[0].b.[0].c'
请注意 mo包括你的模式匹配的所有要替换的字符串,所以我们把匹配的 .回来了。
如果你想要一个 lambda :
re.sub(r"\.(\d)\.", lambda mo: ".[" + str(int(mo.group(1))-1) + "].", a)

关于Python正则表达式替换数字-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67053759/

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