按照你的要求用正则匹配出字符串后,把它们追加到一个字典中的Python程序如下
import re
dic={}
value=[]
s='{:["科目\时间",["流动资产","元",0,true,false],["货币资金","元",2,false,true],["以公允价值计量且其变动计入当期损益的金融资产","元",2,false,true],["应收票据及应收账款","元",2,false,true]}'
regex=r'"([^"]+)"'
result=re.findall(regex,s)
for i in range(1,len(result),2):
value.append(result[i]+"("+result[i+1]+")")
key=result[0]
key=key.replace("科目\时间","科目\年度")
dic[key]=value
print(dic)
源代码(注意源代码的缩进)
说明一下,re.match是从字符串开头匹配的,使用re.search才能从任意位置匹配
而且Python中字符串不能被修改,re.sub并没修改字符串本身,而是返回一个新的字符串,所以即使if语句执行了也不会有任何效果,可以使用下面的代码去掉newTome中字符串的双引号
newToname=[' "Gregg Daileda', 'Jeff Maack', 'Mark Nutter', 'Rachel Steffens', 'Suzanna Strangmeier" , ']newToname=[re.sub(r'\s*"','',i) if re.search('"',i) else i for i in newToname]
直接使用eval函数,将字符串作为命令执行,就可以得到一个字典
s = '{"index": 0, "upstream": "test", "name": "192.168.1.20:10285", "status": "up", "rise": 231302, "fall": 0, "type": "http", "port": 0}'d = eval(s)
print(d["name"])
# 192.168.1.20:10285