用正则表达式处理一个复杂字符串(类似json格式)
#利用正则输出{}中的内容
cityCode:'310100',
text:'上海',
dpt:'20222003',
carNo:'沪A',
pName:'上海市',
cName:'上海市'},
cityCode:'310100',
text:'北京',
dpt:'20222003',
carNo:'京A',
pName:'北京市',
cName:'北京市'}]"""
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格式)的更多相关文章
- JS实现的一个query字符串转Json格式数据的方法
输入字符串的格式是 a=1&b=2&c=3 $.par2Json = function (string, overwrite) { var obj = {}, pairs = stri ...
- 修复一个mysqlbinlog_flashback不支持json格式问题
修复一个mysqlbinlog_flashback不支持json格式问题 , 有问题可以反馈留言 , 如下盘: 最简单的例子为 python mysqlbinlog_back.py --host=&q ...
- 如何识别一个字符串是否Json格式
前言: 距离上一篇文章,又过去一个多月了,近些时间,工作依旧很忙碌,除了管理方面的事,代码方面主要折腾三个事: 1:开发框架(一整套基于配置型的开发体系框架) 2:CYQ.Data 数据层框架(持续的 ...
- JavaScript中,JSON格式的字符串与JSON格式的对象相互转化
前言:JSON是一个独立于任何语言的数据格式,因此,严格来说,没有“JSON对象”和“JSON字符串”这个说法(然而”菜鸟教程“和”W3school“使用了“JSON对象”和“JSON字符串”这个说法 ...
- .net 字符串和JSON格式的互换
近期又做了个问卷调查,问卷调查一次性要保存一二十个题目和答案!所以嘞,博主为了偷懒,就直接把答卷内容保存成了Json格式! 好处当然是很多啦! 只需一个字段就能保存整个答卷的内容! 想想都刺激!哈哈~ ...
- js实现字符串转JSON格式
在浏览器前端实现字符串转JSON格式,有多种方法,总结如下: 方法1. js函数,eval() 语法: var obj = eval ("(" + txt + ")&qu ...
- 关于C# webapi ,接口返回字符串和json格式 ,返回值中有反斜杠
最近遇到一个比较郁闷的问题,记录一下 写了一个接口,想返回json 数据,但是返回值中总是带有反斜杠... ,下面来看原因 首先,配置 webapi的路由 App_Start 文件夹下 ,WebApi ...
- 模拟一个http 请求的json格式报文,带 rsa 签名操作
一.对需要加密的字符串,定义RsaSignUnsign 类,代码如下: 实现了: 1.实现了生成新的pubkey.pri_key方法: 2.将新生成的keys 写入文件: 3.从文件获取pubkey. ...
- List转换成json格式字符串,json格式字符串转换成list
一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...
- js字符串转json格式与json对象转字符串
json字符串----->json对象json对象------>json字符串 使用JSON.parse()函数 this.dataList = JSON.parse(dataList); ...
随机推荐
- 配置Linux描述网络安全CIA模型之可用性案例
在Linux中防御SYN型DOS攻击的方法比较常见的有: 1.增大队列SYN最大半链接数 2.利用SYN cookie技术 下面分别进行分析. 1.增大队列SYN最大半连接数 在LINUX中执行命 ...
- Spark学习笔记0——简单了解和技术架构
目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...
- DDS工作原理及其性能分析
DDS工作原理及其性能分析 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 系列博客说明:此系列博客属于作者在大三大四阶段所储备的关于电子电路设计等硬件方面的 ...
- 最新 房天下java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.房天下等10家互联网公司的校招Offer,因为某些自身原因最终选择了房天下.6.7月主要是做系统复习.项目复盘.LeetCo ...
- 教你成为全栈工程师(Full Stack Developer) 四十五-一文读懂hadoop、hbase、hive、spark分布式系统架构
转载自http://www.shareditor.com/blogshow?blogId=96 机器学习.数据挖掘等各种大数据处理都离不开各种开源分布式系统,hadoop用于分布式存储和map-red ...
- 用户登录时,禁止chrome提示用户保存密码
将input的type=“password”改为type=“text” 在获得焦点后,将type改为password <input class="iptpsw form-control ...
- js前端 多条件筛选查询
一.前言 在做项目中,遇到多条件筛选案例.实现完成以后,我将我做的代码分享在这里,希望可以帮助到其他朋友. 二.效果截图 三.实现代码 首先我先类型.类别.职位分成三块来处理,如果传到服务器端的话,就 ...
- poj1873(二进制枚举+求凸包周长)
题目链接:https://vjudge.net/problem/POJ-1873 题意:n个点(2<=n<=15),给出n个点的坐标(x,y).价值v.做篱笆时的长度l,求选择哪些点来做篱 ...
- S03_CH05_AXI_DMA_HDMI图像输出
S03_CH05_AXI_DMA_HDMI图像输出 5.1概述 本课程是在前面课程基础上添加HDMI IP 实现HDMI视频图像的输出.本课程出了多了HDMI输出接口,其他内容和<S03_CH0 ...
- MyBatis_01 框架
Mybatis概述 Mybatis是什么 Mybatis是一个持久层框架. Mybatis的作用 Mybatis是一个持久层框架,当然作用就是操作数据库的(增删改查). 为什么需要学习Myba ...