Python正则表达式忽略引号之间的内容



我有一个字符串,其中一部分用引号括起来。就像下面代码片段第三行的那个。我想将字符串格式化为dict文本。这意味着在引号缺失的地方,应该添加引号。但是引号中的部分必须被忽略。我想出了下面的代码来处理这个问题:

from ast import literal_eval
from re import sub
str = "key1:[val1,val2,val3],key2:'val4A,val4B'"
str = sub(r"([w-.]+|["'].*["'])", r"'1'", f"{{{str}}}")
str = sub(r"["']{2,}(.*)["']{2,}", r"'1'", str)
fin = literal_eval(str)
print(fin)

这段代码完成了这项工作,但我想知道是否有一种方法可以通过一次性使用sub来实现这一点。在将其标记为重复之前,我尝试了网上提供的大量解决方案,包括正面和负面前瞻和背面、排除和简单的负面匹配。找不到任何可行的。如果有一个解决方案我错过了,或者任何人都有解决方案,我将非常感谢了解它。

尝试此([w-.]+(?=(?:[^']*'[^']*')*[^']*$)):

实时演示

最新更新