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 json
inp_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串均采用双引号。

 

posted @ 2018-02-01 17:21  我是旺旺  阅读(323)  评论(0编辑  收藏  举报