想问下python怎么用正则匹配双引号里面的内容呢?

Python016

想问下python怎么用正则匹配双引号里面的内容呢?,第1张

按照你的要求用正则匹配出字符串后,把它们追加到一个字典中的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