风船野 发表于 2022-1-26 21:43:57

字符串处理,json格式化

接口返回的数据键名缺少双引号,无法转换成json格式,
例:msg部分缺少双引号,应该是“msg”
{msg:"",timestampStr:"2022-01-26 20:48:37",headers:{},timestamp:1643201317238,data:{ID:"b86bd915d6964f72a752039a72428dee",TITLE:"特教学校左面人行道杂草处理",CREATETIME:"2021-09-18 17:25:49",NAME:"mmm",CONTENT:"领导们好,最近学校开学,上学的人行道被树枝遮挡,靠右边的车道又被大型货车违规占道,学生们只能从马路中间行走,给上下学自行回家的学生们带来很大的安全隐患。希望安排工作人员把人行楼梯上的树枝处理一下。感激不尽!!!"},status:0}



ckblt 发表于 2022-1-26 21:43:58

import re


data = '{msg:"",timestampStr:"2022-01-26 20:48:37",headers:{},timestamp:1643201317238,data:{ID:"b86bd915d6964f72a752039a72428dee",TITLE:"特教学校左面人行道杂草处理",CREATETIME:"2021-09-18 17:25:49",NAME:"mmm",CONTENT:"领导们好,最近学校开学,上学的人行道被树枝遮挡,靠右边的车道又被大型货车违规占道,学生们只能从马路中间行走,给上下学自行回家的学生们带来很大的安全隐患。希望安排工作人员把人行楼梯上的树枝处理一下。感激不尽!!!"},s:0}'


def handle(s):
    while a := re.search(r"({|,)(\w*):", s):
      b = list(s)
      b.insert(a.span() + 1, '"')
      b.insert(a.span(), '"')
      s = "".join(b)

    return s


handle(data)

阿奇_o 发表于 2022-1-27 00:15:28

ckblt 发表于 2022-1-26 21:43


你的思路我理解了,很不错,但我孤陋寡闻,请教一下:while a := re.search(r"({|,)(\w*):", s):
这 := 是哪里的语法,不报错? 是python2的写法?

ckblt 发表于 2022-1-27 11:11:37

阿奇_o 发表于 2022-1-27 00:15
你的思路我理解了,很不错,但我孤陋寡闻,请教一下:while a := re.search(r"({|,)(\w*):", s):
这 :=...

不是的,Python 3.8 才出现

:= 运算符(海象运算符)是赋值同时也返回值

比如,
>>> a = 10 # 没返回值
>>> if (b := 20) == 20: print(b) # 其中,b 赋值为 20,而 (b := 20) 返回 20(说白了就是等于20)
20
>>> b
20
注意,海象运算符只能在 if 的条件里(if a:=10 > 5: xxx)
或是在 while 的条件里 (while a := 10 > 5: xxx)
或是在列表推导式里。

我其实也说不清楚,你可以百度“python 海象运算符”

阿奇_o 发表于 2022-1-27 12:16:26

ckblt 发表于 2022-1-27 11:11
不是的,Python 3.8 才出现

:= 运算符(海象运算符)是赋值同时也返回值


我的python 3.7,原来如此。。 "海象运算符",哈哈,够形象的 :=

wp231957 发表于 2022-1-27 15:12:22

阿奇_o 发表于 2022-1-27 12:16
我的python 3.7,原来如此。。 "海象运算符",哈哈,够形象的 :=

pascal里面的赋值语句
页: [1]
查看完整版本: 字符串处理,json格式化