今天遇到一个需求,字符串类似
"{ 'form_view_ref' : 'hr_expense.hr_expense_view_form_without_header' ,'default_employee_id': employee_id, 'default_company_id': company_id}"
这并不是标准的json字符串,因为其中含有变量,所以无法使用json.loads将其转为字典。需求是将form_view_ref这个字段的键值对删除。又想到可以使用eval函数,先将其中的变量声明赋值,再转为dict删除form_view_ref键值对后再转为json字符串。但是这样无论如何json字符串的字段都会含有双引号,真tm操性。老子直接上正则。
import re
context = "{ 'form_view_ref' : 'hr_expense.hr_expense_view_form_without_header' ,'default_employee_id': employee_id, 'default_company_id': company_id}"
def remove_item(string: str, key: str) -> str:
string = string.lstrip(" ").rstrip(" ").lstrip("{").rstrip("}")
key_pattern = ".+" + key + ".+"
replace_pattern_first = re.compile(f"[\'\"]{key}?[\'\"].+?:.+?[\'\"].+?[\'\"][^,]+,")
replace_pattern_second = re.compile(f"[\'\"]{key}?[\'\"].+?:.+?[\'\"].+?[\'\"][^,]?")
if not re.match(key_pattern, string):
raise Exception("嗨害")
string = re.sub(replace_pattern_first, "", string)
string = re.sub(replace_pattern_second, "", string)
string = "{" + string.lstrip(" ").rstrip(" ").rstrip(",").rstrip(" ") + "}"
return string
print(remove_item(context, "form_view_ref"))
正则真的很难写,而且很难测,而且真的很难写,而且很难测。
这里写目录标题问题代码结语问题今天遇到一个需求,字符串类似"{ 'form_view_ref' : 'hr_expense.hr_expense_view_form_without_header' ,'default_employee_id': employee_id, 'default_company_id': company_id}"这并不是标准的json字符串,因为其中含有变量,所以无法使用json.loads将其转为字典。需求是将form_view_ref这个字段的键值对删除。
这篇文章主要介绍了python中删除某个元素的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
python中关于删除list中的某个元素,一般有三种方法:remove、pop、del
1.remove: 删除单个元素,删除首个符合条件的元素,按值删除
举例说明:
>>> str=[1,2,3,4,5,2,6]
>>> str.remove(2)
[1, 3, 4, 5, 2, 6]
2.pop: 删除单个或多个元素,按位删除(根据索引删除)
>>> str=[0,1,2,3,4,5,6]
>>> str.pop(
d.update({'three': 3, 'four':4})
d.update({'one': 2, 'two': 2})
with open('param.json', 'r+') as file:
p = json.load(file)
#key= 'one'
#del p(key) //这里
[{id,12,title:"测试数据标题",content:"这是文章内容"},
{id,13,title:"测试数据标题13",content:"这是文章内容"},
{id,14,title:"测试数据标题14",content:"这是文章内容"}]
我们经常碰到一些JSON数据的Key值不是字符串,这些数据在JavaScript的上下文中是可以解析的,但在Python中,没有该部分数据的上下文,无法采用json.loads(JSON)的形式导入。
方法一:使用demjson库
pip in
string1 = '海堤(段)终点坐标(东经)(度)'
string2 = "分(泄)洪闸(节制闸、排退水闸、引进水闸、挡潮闸)设计过闸流量"
string3 = '就医地点分类(本统筹地区、(地级)市内跨统筹地区、省内跨统筹地区、省外就医)'
1.正则匹配串前加了r就是为了使得里面的特殊符号不用写反斜杠了。
2.[ ]具有去特殊符号的作用,也就是说[(]里的(只是平凡的括号
3.正则匹配串里的()是为了提取整个正则串中符合括号里
json_str = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_str)
name = data['name']
age = data['age']
city = data['city']
print(name, age, city)
输出结果为:
John 30 New York
[code=python]
rom flask_restful import Api as _Api
from werkzeug.exceptions import HTTPException
class Api(_Api):
def handle_error(self, e):
if isinstance(e, HTTPException):
raise HTTPException()
else:
raise Exception()
[/code]
【python】利用多进程提高计算型任务速度
哥的心、禁止访问:
【UNIX网络编程】第五章TCP简单通讯完整代码及知识点
工丨具丨人:
【UNIX网络编程】第五章TCP简单通讯完整代码及知识点
哥的心、禁止访问:
c语言可变参数原理
爱唱歌的葫芦娃: