pythonjsonstr转换
1. 基本
# 1. 【python字典】转json格式【str】
import json
dic = {'a': 1, 'b': 2, 'c': 3}
str1 = json.dumps(dic, sort_keys=True, indent=4, separators=(',', ':')) # 有换⾏缩进的str
str2 = json.dumps(dic)
'''
我们来对这⼏个参数进⾏下解释:
sort_keys:是否按照字典排序(a-z)输出,True代表是,False代表否。
indent=4:设置缩进格数,⼀般由于Linux的习惯,这⾥会设置为4。
separators:设置分隔符,在dic = {'a': 1, 'b': 2, 'c': 3}这⾏代码⾥可以看到冒号和逗号后⾯都带了个空格,这也是因为Python的默认格式也是如此,如果不想后⾯带有空格输出,那就可以设置成separators=(',', ':'),如果想保持原样,可以写成separators=(', ', ': ')。
'''
# 2. 类似json格式【str】转python【dict】使⽤demjson
pip install demjson
import demjson
js_json = "{x:1, y:2, z:3}"
py_json1 = "{'x':1, 'y':2, 'z':3}"
py_json2 = '{"x":1, "y":2, "z":3}'
data = demjson.decode(js_json) # {'y': 2, 'x': 1, 'z': 3}
# 3. json格式【str】转python【dict】
python json字符串转数组import json
str = '{"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}'
j = json.loads(str) # dict 类型
# 4. list格式的【str】转python【dict】
test_str = "[{'PTP sync time between RU and DU: ': 2}, {'Radio data path sync time: ': 2}, {'Tx Carrier setup time in radio: ': 7}, "
str_list = [x.strip() for x in test_str.strip('[]').split(',') if x.strip() is not '']
dic_list = [eval(x.strip()) for x in test_str.strip('[]').split(',') if x.strip() is not ''] # eval把str转换成dic
# 5. 函数化【list】转json格式【str】
def list_to_json(str):
dic = {}
for i, j in enumerate(str):
dic[i] = j
return json.dumps(dic, sort_keys=True, indent=4, separators=(',', ': '))
print(list_to_json(['aa','bb','cc']))
'''
{
"0": "aa",
"1": "bb",
"2": "cc"
}
'''
2. json⽂件中做注释的⽂件load
def load_json(path):
import json
lines = [] # 第⼀步:定义⼀个列表,打开⽂件
with open(path) as f:
for row adlines(): # 第⼆步:读取⽂件内容
if row.strip().startswith("//"): # 第三步:对每⼀⾏进⾏过滤
continue
lines.append(row) # 第四步:将过滤后的⾏添加到列表中.
return json.loads("\n".join(lines)) #将列表中的每个字符串⽤某⼀个符号拼接为⼀整个字符串,⽤json.loads()函数加载
3. json.load和json.loads区别
with open("⽂件名") as f:
print(type(f)) # <class '_io.TextIOWrapper'> 也就是⽂本IO类型 result=json.load(f)
with open("⽂件名") as f:
adline():
print(type(line)) # <class 'str'>
result=json.loads(line)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论