#利用正则输出{}中的内容

str1="""var local=[{provinceCode:'310000',
          cityCode:'310100',
          text:'上海',
          dpt:'20222003',
          carNo:'沪A',
          pName:'上海市',
          cName:'上海市'},
         {provinceCode:'322222',
          cityCode:'310100',
          text:'北京',
          dpt:'20222003',
          carNo:'京A',
          pName:'北京市',
          cName:'北京市'}]"""
#方法1
 
import re
print(re.findall(r'{?\w+:\'\w*\',?}?',str1,re.I|re.M)) res=re.sub(r'\s+','',str1,re.I|re.M)
print('res:',res) result=re.findall(r'{?\w+:\'\w+\',?}?',res,re.I|re.M)
print('result:',result) rr=''
import string
s=string.punctuation
d={}
for i in result:
if i[0]=='{': #处理 第一行包含{开头的
out_key=i.split(':')[1].strip(s)
d[out_key]={}
inner_key=i.split(':')[0][1:]
value=i.split(':')[1].strip(s)
d[out_key][inner_key]=value
elif i[-1]=='}': #处理最后一行包含}结尾的
inner_key=i.split(':')[0]
value=i.split(':')[1][:-1].strip(s)
d[out_key][inner_key]=value
else: #处理中间普通行
inner_key=i.split(':')[0]
value=i.split(':')[1].strip(s)
d[out_key][inner_key]=value print('处理结果:',d) for i in result:
print('分组打印:',i)
#方法2
#直接取到了大括号内的内容的匹配方式:
print(re.findall(r'{.*?}',str1,re.M|re.DOTALL)) #然后把结果处理成一个字典:
result=re.findall(r'{.*?}',str1,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'province\w+:(\'\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被加"",所以使用后置肯定(?=:),表示有:的才会匹配 print(temp) s='dd='+'{'+temp+'}' #用exec处理内层字符串为字典
exec(s)
d[outkey]=dd print('最终处理结果:',d)

用正则表达式处理一个复杂字符串(类似json格式)的更多相关文章

  1. JS实现的一个query字符串转Json格式数据的方法

    输入字符串的格式是 a=1&b=2&c=3 $.par2Json = function (string, overwrite) { var obj = {}, pairs = stri ...

  2. 修复一个mysqlbinlog_flashback不支持json格式问题

    修复一个mysqlbinlog_flashback不支持json格式问题 , 有问题可以反馈留言 , 如下盘: 最简单的例子为 python mysqlbinlog_back.py --host=&q ...

  3. 如何识别一个字符串是否Json格式

    前言: 距离上一篇文章,又过去一个多月了,近些时间,工作依旧很忙碌,除了管理方面的事,代码方面主要折腾三个事: 1:开发框架(一整套基于配置型的开发体系框架) 2:CYQ.Data 数据层框架(持续的 ...

  4. JavaScript中,JSON格式的字符串与JSON格式的对象相互转化

    前言:JSON是一个独立于任何语言的数据格式,因此,严格来说,没有“JSON对象”和“JSON字符串”这个说法(然而”菜鸟教程“和”W3school“使用了“JSON对象”和“JSON字符串”这个说法 ...

  5. .net 字符串和JSON格式的互换

    近期又做了个问卷调查,问卷调查一次性要保存一二十个题目和答案!所以嘞,博主为了偷懒,就直接把答卷内容保存成了Json格式! 好处当然是很多啦! 只需一个字段就能保存整个答卷的内容! 想想都刺激!哈哈~ ...

  6. js实现字符串转JSON格式

    在浏览器前端实现字符串转JSON格式,有多种方法,总结如下: 方法1. js函数,eval() 语法: var obj = eval ("(" + txt + ")&qu ...

  7. 关于C# webapi ,接口返回字符串和json格式 ,返回值中有反斜杠

    最近遇到一个比较郁闷的问题,记录一下 写了一个接口,想返回json 数据,但是返回值中总是带有反斜杠... ,下面来看原因 首先,配置 webapi的路由 App_Start 文件夹下 ,WebApi ...

  8. 模拟一个http 请求的json格式报文,带 rsa 签名操作

    一.对需要加密的字符串,定义RsaSignUnsign 类,代码如下: 实现了: 1.实现了生成新的pubkey.pri_key方法: 2.将新生成的keys 写入文件: 3.从文件获取pubkey. ...

  9. List转换成json格式字符串,json格式字符串转换成list

    一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...

  10. js字符串转json格式与json对象转字符串

    json字符串----->json对象json对象------>json字符串 使用JSON.parse()函数 this.dataList = JSON.parse(dataList); ...

随机推荐

  1. LNMP V1.4正式版本安装及新增Let's Encrypt一键安装和其他功能

    军哥的LNMP一键安装包已经有一些年头了,着实给需要在Linux VPS.服务器中安装WEB环境的用户提供不小的帮助,而且每年儿童节都会有较大版本的更新和升级.老左在二月份的时候有体验过LNMP V1 ...

  2. vscode常用插件小结

    工欲善其事,必先利其器. 个人用过的代码编辑器有sublime,webstrom,vscode,H5builder.综合比较下来还是更倾向于vscode. sublime是一款轻量级的编辑器,优点是启 ...

  3. 最新 新浪java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.新浪等10家互联网公司的校招Offer,因为某些自身原因最终选择了新浪.6.7月主要是做系统复习.项目复盘.LeetCode ...

  4. hdu 1006 Tick and Tick

    Tick and Tick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  5. Haystack--基于Django的全文检索框架

    好文章转载自:https://suguangti.cnblogs.com/p/11167097.html 阅读目录 1.什么是Haystack 2.安装 3.配置 4.处理数据 创建索引 5.设置视图 ...

  6. js删除array数组中元素

    for(var i = 0; i < array.length; i++) { if(-1 != array[i]) { array.splice(i, 1); i--; } } 上面if就是判 ...

  7. PGA+SGA的几个参数操作

    1.sga_max_size;是静态的必须重启之后生效需要加scope=spfile;(不要超过物理内存值) SQL> alter system set sga_max_size=500M sc ...

  8. 《Mysql - 为什么表数据删掉一半,表文件大小不变?》

    一:概念 - 这里,我们还是针对 MySQL 中应用最广泛的 InnoDB 引擎展开讨论. - 一个 InnoDB 表包含两部分,即:表结构定义和数据. - 在 MySQL 8.0 版本以前,表结构是 ...

  9. Word 删除脚注尾注前边的编号

    1. 前言 一般我们插入尾注都是有编号的,怎么插入无编号的尾注? 2. 步骤 进入引用选项卡,然后注意不要点插入脚注,而要点脚注最右下方的小方框,出现脚注和尾注的对话框,点符号(Y)...,选第一个格 ...

  10. centos 7.2安装git2.x版本

    前言 今天在我的centos7.2开发环境安装git2.x时候遇到了各种问题,还好一一解决,为方便大家,这里列出遇到的问题和解决办法,yum默认安装的git1.8版本的,公司git服务器在window ...