用正则表达式处理一个复杂字符串(类似json格式)
发布时间:2020-12-14 06:10:05 所属栏目:百科 来源:网络整理
导读:#利用正则输出{}中的内容 str1="""var local=[{provinceCode:‘310000‘, ?? cityCode:‘310100‘, ?? text:‘上海‘, ?? dpt:‘20222003‘, ?? carNo:‘沪A‘, ?? pName:‘上海市‘, ?? cName:‘上海市‘}, ? {provinceCode:‘322222‘, ?? text:‘北京‘,
#利用正则输出{}中的内容
str1="""var local=[{provinceCode:‘310000‘,
?? cityCode:‘310100‘, ?? text:‘上海‘, ?? dpt:‘20222003‘, ?? carNo:‘沪A‘, ?? pName:‘上海市‘, ?? cName:‘上海市‘},
? {provinceCode:‘322222‘,
?? text:‘北京‘, ?? carNo:‘京A‘, ?? pName:‘北京市‘, ?? cName:‘北京市‘}]"""
#方法1
?
import re #方法2 #直接取到了大括号内的内容的匹配方式: print(re.findall(r‘{.*?}‘,re.M|re.DOTALL)) #然后把结果处理成一个字典: result=re.findall(r‘{.*?}‘,re.M|re.DOTALL) print(‘吴老师的reuslt:‘,result) def func(s): s=‘"‘+str(s.group(1))+‘"‘ #正常不需要 返回:但是处理京A的A特殊处理一下 return s d={} for i in result: outkey=re.search(r‘provincew+:(‘w+‘)‘,i).group(1) #以province的编号作为外层key d[outkey]={} #定义内层字典,存储明细 temp=re.sub(r"[{}s]+","",i) #替换掉字符串的{}及空白 temp=re.sub(r‘([a-zA-Z]+)(?=:)‘,func,temp) #正常不加:,但是会导致京A的A被加"",所以使用后置肯定(?=:),表示有:的才会匹配 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |