002、Python中json字符串与字典转换
1、测试用例文件TestCase.xlsx
2、编写Python文件进行读取
#!/usr/bin/env python # -*- coding:utf-8 -*- import time import xlrd class ReadExcel: def __init__(self,excel_file): self.excel_file = excel_file self.case_id = 0 #用例ID self.http_method = '' #接口http方法 self.request_name = '' #接口ming self.request_url = '' #接口请求url self.request_param = ''#请求参数 self.test_method = '' #测试方法 self.test_desc = '' #测试(用力)描述 self.result = '' #测试结果 self.reason = '' #失败原因 def read_excel(self): excel_data = [] data = xlrd.open_workbook(self.excel_file) table = data.sheet_by_index(0) #通过索引顺序获取 for i in range(1,table.nrows): excel_data.clear() if table.cell(i,7).value.replace('\n','').replace('\r','') != 'Yes': continue row_data = table.row_values(i) self.case_id = str(int(table.cell(i, 0).value)).replace('\n','').replace('\r','') self.test_desc = table.cell(i, 1).value.replace('\n','').replace('\r','') #api_host = table.cell(i, 2).value.replace('\n','').replace('\r','') self.request_url = table.cell(i, 3).value.replace('\n','').replace('\r','') self.test_method = table.cell(i, 4).value.replace('\n','').replace('\r','') self.request_param = table.cell(i, 5).value.replace('\n','').replace('\r','') self.result = table.cell(i, 6).value excel_data.append((self.case_id,self.test_desc,self.request_url,self.test_method,self.request_param,self.result)) yield excel_data
3、通过json.loads(str)将字符串转换成字典
import json
dict1 = json.loads(str)
读取的过程中一致出现问题:
解决方案如下:
有一个需求,需要用python把json字符串转化为字典
inp_str
=
" {'k1':123, 'k2': '345',’k3’,’ares’} "
import jsoninp_str
=
" {'k1':123, 'k2': '345',’k3’,’ares’} "
print json.loads(a)
死活出不来结果,还报错,没搞明白。
最后,直接复制网上的代码,OK,运行成功,可是把我的inp_srt变量填进去,不行,报错;开始对比两个变量有什么不同,一直以为Python中双引号单引号可以随便用,意思不变;最后百度了知道json的标准格式:要求必须 只能使用双引号作为键 或者 值的边界符号,不能使用单引号,而且“键”必须使用边界符(双引号)
改了后OK了。
#-*-coding:utf-8-*- import json inp_strr = '{"k1":123, "k2": "456", 'k3':"ares"}' inp_dict = json.loads(inp_strr) # 根据字符串书写格式,将字符串自动转换成 字典类型 print inp_dict
今后如何避免:所有的json串均采用双引号。