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

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)

最新文章

  1. MySQL中int类型的字段使用like查询方法
  2. REDHAT6.2配置yum源(64位)(转载)
  3. Linux shell 之 提取文件名和目录名的一些方法
  4. 2018年手机应用UI设计趋势预测
  5. 设计模式之观察者(OBSERVER)模式
  6. css 四周边框角加粗效果
  7. Spring框架中<constructor-arg>与<property>理解
  8. TensorFlow 算术运算符
  9. IPOPT工具解决非线性规划最优化问题使用案例
  10. js中的async await
  11. struts2中ognl标签具体解释
  12. ARM裸板开发:07_IIC 通过IIC总线接口读写时钟芯片时间参数实现的总结
  13. Mysql最左匹配原则实践(原创)
  14. 微信小程序地图之逆地理编码
  15. VSS2005设置不输入密码直接登录VSS
  16. 20145316许心远《Java程序设计》第5周学习总结
  17. Python中断多重循环的几种思路exit_flag
  18. Centos 7搭建Gitlab服务器(一),搭配文章(二)一起使用,效果更好
  19. Linux定时增量更新文件--转
  20. Python学习笔记 - day11 - Python操作数据库

热门文章

  1. npm镜像指定用淘宝镜像去下载
  2. nginx+keepalived主从高可用配置
  3. uwp,c#,listView与gridView列表控件进阶
  4. 27.Spark中transformation的介绍
  5. 《Mysql - 为什么表数据删掉一半,表文件大小不变?》
  6. 给内部类对象数组属性赋值时报错:Exception in thread "main" java.lang.NullPointerException
  7. vim字符匹配
  8. (转)从0移植uboot(三) _编译最小可用uboot
  9. 在JAVA中如何获取当前源文件名以及代码的行号
  10. SQL Server 2017 左补齐