用RE.sub()替换Python中使用RE.FINDALL后的列表
我看到有一些类似的问题,但我还没有找到一个我能理解的问题来解决这个问题。 我试图替换json中的一些数字,并用其他数字替换它们 我试图用特定的模式找到它们,但我不确定如何替换它们,因为我无法逐个分配找到的字符串 我想要的结果是:用RE.sub()替换Python中使用RE.FINDALL后的列表,python,json,regex,Python,Json,Regex,我看到有一些类似的问题,但我还没有找到一个我能理解的问题来解决这个问题。 我试图替换json中的一些数字,并用其他数字替换它们 我试图用特定的模式找到它们,但我不确定如何替换它们,因为我无法逐个分配找到的字符串 我想要的结果是: 从json中,“1111111”将替换为“p7[0]”,“2222222”将替换为“p7[1]等 我想到的是使用re.sub,但我不确定如何处理列表,下面是一个正确的前进方式吗 我可能的想法 for i in p7: re.sub(pattern7, p7[i],
从json中,“1111111”将替换为“p7[0]”,“2222222”将替换为“p7[1]等 我想到的是使用
re.sub
,但我不确定如何处理列表,下面是一个正确的前进方式吗
我可能的想法
for i in p7:
re.sub(pattern7, p7[i], lst[0])
for i in p6:
re.sub(pattern6, p6[i], lst[0])
for i in p5:
re.sub(pattern5, p5[i], lst[0])
for i in p2:
re.sub(pattern2, p2[i], lst[1])
当前代码
import json
import re
p7 = ['[7777777, 7777777, 7777777, 7777777, 7777777, 7777777 ,7777777]', '[6666666, 6666666, 6666666, 6666666, 6666666, 6666666, 6666666]', '[4444444, 4444444, 4444444, 4444444, 4444444, 4444444, 4444444]', '[1111111, 1111111, 1111111, 1111111, 1111111, 1111111, 1111111]', '[2222222, 2222222, 2222222, 2222222, 2222222, 2222222, 2222222]']
p6 = ['3333333, 3333333, 3333333, 3333333, 3333333, 3333333']
p5 = ['5555555, 5555555, 5555555, 5555555, 5555555, 5555555']
p2 = ['2121211', '3434343']
# Opening JSON file
f = open('arv.json',)
pattern7 = '\[[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\]'
pattern6 = '\[[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\]'
pattern5 = '\[[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\,\s[0-9]*\]'
pattern2 = '\[[0-9]*\]'
pattern7 = re.compile(pattern7)
pattern6 = re.compile(pattern6)
pattern5 = re.compile(pattern5)
pattern2 = re.compile(pattern2)
# returns JSON object as
# a dictionary
data = json.load(f)
# Iterating through the json
# list
lst = []
#search = []
for i in data['setting']['rule']['jsonLogic']['merge']:
lst.append(str(i))
products7 = re.findall(pattern7, lst[0])
products5 = re.findall(pattern5, lst[0])
products6 = re.findall(pattern6, lst[0])
products2 = re.findall(pattern2, lst[1])
print(re.findall(pattern7, lst[0]))
print(re.findall(pattern5, lst[0]))
print(re.findall(pattern6, lst[0]))
print(re.findall(pattern2, lst[1]))
# Then im stuck....
# Closing file
f.close()
JSON
{
"serviceType": "Normal",
"setting": {
"T1": "SC",
"T2": "SC",
"TYPE": "WEB",
"IDS": "[1111111,2222222,3333333,4444444,5555555,6666666,7777777,8888888]",
"title": null,
"description": "",
"rule": {
"attrs": {
"maxResults": "10"
},
"jsonLogic": {
"merge": [{
"if": [{
"and": [{
">=": [{
"var": "t1"
},
{
"var": "t2"
}
]
},
{
">=": [{
"var": "t3"
},
{
"var": "t4"
}
]
},
{
">=": [{
"var": "t5"
},
{
"var": "t6"
}
]
},
{
">=": [{
"var": "t7"
},
{
"var": "t8"
}
]
}
]
},
[
1111111,
1111111,
1111111,
1111111,
1111111,
1111111,
1111111
],
{
"and": [{
">=": [{
"var": "t1"
},
{
"var": "t2"
}
]
},
{
">=": [{
"var": "t3"
},
{
"var": "t4"
}
]
},
{
">=": [{
"var": "t8"
},
{
"var": "t7"
}
]
},
{
">=": [{
"var": "t8"
},
{
"var": "t4"
}
]
}
]
},
[
2222222,
2222222,
2222222,
2222222,
2222222,
2222222,
2222222
],
{
"and": [{
">=": [{
"var": "t3"
},
{
"var": "t7"
}
]
},
{
">=": [{
"var": "t3"
},
{
"var": "t8"
}
]
},
{
">=": [{
"var": "t4"
},
{
"var": "t7"
}
]
},
{
">=": [{
"var": "t4"
},
{
"var": "t8"
}
]
}
]
},
[
3333333,
3333333,
3333333,
3333333,
3333333
],
{
"and": [{
">=": [{
"var": "t7"
},
{
"var": "t3"
}
]
},
{
">=": [{
"var": "t7"
},
{
"var": "t4"
}
]
},
{
">=": [{
"var": "t8"
},
{
"var": "t3"
}
]
},
{
">=": [{
"var": "t8"
},
{
"var": "t4"
}
]
}
]
},
[
4444444,
4444444,
4444444,
4444444,
4444444,
4444444,
4444444
],
{
"and": [{
">=": [{
"var": "t7"
},
{
"var": "t3"
}
]
},
{
">=": [{
"var": "t7"
},
{
"var": "t8"
}
]
},
{
">=": [{
"var": "t4"
},
{
"var": "t3"
}
]
},
{
">=": [{
"var": "t4"
},
{
"var": "t8"
}
]
}
]
},
[
5555555,
5555555,
5555555,
5555555,
5555555,
5555555
],
[
6666666,
6666666,
6666666,
6666666,
6666666,
6666666,
6666666
]
]
},
{
"if": [{
">=": [{
"var": "t9"
},
{
"var": "t10"
}
]
},
[
7777777
],
[
8888888
]
]
}
]
}
}
},
"ccd": 110
}
“从json的'1111111'将被替换为'p7[0],'2222222'将被'p7[1]等。”我不明白。告诉您如何进行更换的规则是什么?