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

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. 居里先生的猜想 | 皮埃尔·居里诞辰160周年

    皮埃尔·居里(Pierre Curie)先生坐在桌前,手里把玩着一块小磁铁.忽然,一道闪念跃入脑海,他为自己这个大胆的想法激动不已,忍不住伏案疾笔书写起来.不远处,一位安静的青年女子温情脉脉地注视着他 ...

  2. 【miscellaneous】各种音视频编解码学习详解

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  3. 从零开始学游戏开发(一):下载与安装UE4游戏引擎

    如何下载和安装虚幻引擎 下载Epic Games Launcher 步骤 百度搜索"what is ue4" 点击第一个搜索结果,进入ue4官网 进入官网首页,点击右上角下载 创建 ...

  4. php open_basedir的使用与性能分析

    php open_basedir的使用与性能分析 使用方法 <pre>/*限制打开的目录*/ini_set('open_basedir', __DIR__.'/');</pre> ...

  5. 2、1 昨天讲列表缓存,为了让列表更新,我们需要在增、删、改方法之前加 @CacheEvict(value="list",allEntries = true)

    package com.bw.service; import java.util.List; import javax.annotation.Resource; import org.springfr ...

  6. java中this的使用

    java中的this随处可见,用法也多,现在整理有几点:this1.当全局变量跟局部变量重名时,表示使用全局变量(此时this指代本类对象)例有一类class A{    String name;   ...

  7. TypeScript symbol类型

    自ECMAScript 2015(ES6)起,symbol成为了一种新的原生类型,就像基本类型number和string一样. ⒈介绍及使用方式 TypeScript中使用symbol类型和JavaS ...

  8. FZU - 2295 Human life (最大权闭合子图)

    题目链接 FZU - 2295 Human life 题目分析 题意:你在玩一个游戏,在其中你可以通过学习一些技能,但是学习某些技能之前,可能还要学习一些其他的技能,并且学习任何技能都有一定的花费: ...

  9. 安全篇-AES/RSA加密机制

    在服务器与终端设备进行HTTP通讯时,常常会被网络抓包.反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数.为了确保信息的安全,我们采用AES+RSA组合的方式进行接口参数 ...

  10. go hello world第一个程序

    main 函数所在的包名必须使用main import "fmt"  导入包fmt  fmt包包含了Println方法的定义 func main() 程序运行入口方法和c语言相似 ...