pythonlisttojson
A. python3 读excel转Json文件
from xlrd import *
import json
# 参考1-字典、列表转JSON:https://www.cnblogs.com/longchang/p/10904850.html
# 参考2-JSON直接保存到文件:https://www.cnblogs.com/miyatest/p/9603897.html
# 从excel读取数据存放到列表中
def readExcel():
keyData=[] # 定义空List,用于保存读到的行数据
excelBook=open_workbook("data.xlsx") # 从当前目录读取《data.xlsx》文件
table=excelBook.sheet_by_name("data") # 从《data.xlsx》中找名为 data的sheet页
rowNum=table.nrows # 获取《data.xlsx》-->data页中 行数
colNum=table.ncols # 获取《data.xlsx》-->data页中 列数
colName=table.row_values(0) # 取第一行数据,即列名,colName 是个List
# print(colName)
if rowNum<=1:
print("没数据...") # 如果行数<=1,说明没有数据,因第1行一般定义为列名
else:
for i in range(rowNum-1):
d={} # 定义空字典,用于存放获取到数据
values=table.row_values(i+1) # 获取每行的数据,values最终是个List
# print(values)
for x in range(colNum): # 每个列作为字典的一组数据
d[colName[x]]=values[x] # 用colName值作为字典的key,values值作业为字典的value
# print(d)
keyData.append(d) # 读完一行数据保存到字典,再保存到列表
# print(keyData)
return keyData # 全部数据读完并保存到列表后,返回
# 列表转Json
def listToJson():
keyParam=readExcel() # 调用从excel读取数据的函数,把数据保存到列表
CaseConfig=open("CaseConfig.json", mode="w+") # 创建json文件
CaseConfig.write('{\n"key":') # 往json文件中写数据,先写json的格式的{,和模块名
# 把从excel读取的数据转成Json格式保存入 CaseConfig,indent=4是进行格式化,使json排版好看
json.mp(keyParam, CaseConfig, indent=4)
CaseConfig.write('\n}') # 往json文件中写数据,写结尾的 },写前先换行
CaseConfig.close() # 关闭json文件,必要!!
if __name__ == '__main__': # 调试调用
listToJson()
B. Python中list的实现
原文链接
这篇文章介绍了Python中list是如何实现的。
在Python中list特别有用。让我们来看下list的内部是如何实现的。
来看下面简单的程序,在list中添加一些整数并将他们打印出来。
正如你所看到的,list是可以迭代的。
Python中list是用下边的C语言的结构来表示的。 ob_item 是用来保存元素的指针数组,allocated是 ob_item 预先分配的内存总容量
让我们来看下当初始化一个空list的时候发生了什么 L = []
非常重要的是知道list申请内存空间的大小(后文用allocated代替)的大小和list实际存储元素所占空间的大小( ob_size )之间的关系, ob_size 的大小和 len(L) 是一样的,而allocated的大小是在内存中已经申请空间大小。通常你会看到allocated的值要比 ob_size 的值要大。这是为了避免每次有新元素加入list时都要调用realloc进行内存分配。接下来我们会看到更多关于这些的内容。
我们在list中追加一个整数:L.append(1)。发生了什么?调用了内部的C函数app1()
来让我们看下 list_resize() , list_resize() 会申请多余的空间以避免调用多次 list_resize() 函数,list增长的模型是:0, 4, 8, 16, 25, 35, 46, 58, 72, 88, …
开辟了四个内存空间来存放list中的元素,存放的第一个元素是1。你可以从下图中看到L[0]指向了我们刚刚加进去的元素。虚线的框代表了申请了但是还没有使用(存储元素)的内存空间
现在我们在列表的第一个位置插入一个整数5:L.insert(1, 5),看看内部发生了什么。调用了ins1()
当你弹出list的最后一个元素:L.pop()。调用listpop(), list_resize 在函数listpop()内部被调用,如果这时 ob_size (译者注:弹出元素后)小于allocated(译者注:已经申请的内存空间)的一半。这时申请的内存空间将会缩小。
Pop的时间复杂度是O(1)
Python list对象有一个方法可以移除一个指定的元素。调用listremove()。
切开list和删除元素,调用了 list_ass_slice() (译者注:在上文slice list between element's slot and element's slot + 1被调用),来看下 list_ass_slice() 是如何工作的。在这里,低位为1 高位为2(译者注:传入的参数),我们移除在1号内存空间存储的数据5
Remove的时间复杂度为O(n)
文中list的sort部分没有进行翻译
核心部分
C. Python3 字符串str和列表list转换
>>> str1 = "abcdefg"
>>> list1 = list(str1)
>>> print(list1)
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> str4 = "username=admin&passsword=123456"
>>> list4 = str4.split("&")
>>> print(type(list4))
<class 'list'>
>>> print(list4)
['username=admin', 'passsword=123456']
如果我们要对多个字符进行分割,那么可以使用内置模块 re.split() 方法。
>>> str5 = "username=admin&passsword=123456"
>>> import re
>>> list5 = re.split("&|=", str5)
>>> print(type(list5))
<class 'list'>
>>> print(list5)
['username', 'admin', 'passsword', '123456']
>>> import json
>>> str3 = '["aaa", "bbb", "ccc", "ddd"]'
>>> list3 = json.loads(str3)
>>> print(type(list3))
<class 'list'>
>>> print(list3)
['aaa', 'bbb', 'ccc', 'ddd']
>>> str2 = "['aaa', 'bbb', 'ccc', 'ddd']"
>>> list2 = eval(str2)
>>> print(type(list2))
<class 'list'>
>>> print(list2)
['aaa', 'bbb', 'ccc', 'ddd']
针对str2,json.loads()方法为何失灵了?
因为 json.loads() 将json格式字符串转换为python对象,而按 json 的标准规范应该使用双引号,如果使用单引号会导致报错。
# 注意,转换之后,双引号会变为单引号
>>> list1 = ["aaa", 123, 'ccc', True]
>>> str1 = str(list1)
>>> print(type(str1))
<class 'str'>
>>> print(str1)
['aaa', 123, 'ccc', True]
>>> list3 = ['username=admin', 'passsword=123456']
>>> str3 = "&".join(list3)
>>> print(type(str3))
<class 'str'>
>>> print(str3)
username=admin&passsword=123456
# 这里列表中使用了单引号
>>> list4 = ['username=admin', 'passsword=123456']
>>> import json
>>> str4 = json.mps(list4)
>>> print(type(str4))
<class 'str'>
>>> print(str4)
["username=admin", "passsword=123456"]
Python3下字典、字符串及列表的相互转换
D. python里面list写成json格式
提供一个思路(ps:本思路没有具体实践过,得靠你来完成啦!)
你可以将那几个变量构造成一个json字符串,然后直接写入文件。
all_the_text="{'gain':"+gain+",'Pot':"+Pot+",'Accel':"+Accel+",'Fullscale':"+Fullscale+",}"
python中写入文件的过程如下:
file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )
E. 如何把python里面的list变成json对象
import json
file = open("your_file_name.txt", 'a') # 追加的方式写入
your_dict = {}
your_dict['a'] = 0.123
your_dict['b'] = [1.1, 1.2, 1.3, 1.4, 1.5]
your_dict['c'] = 0.2
json_str = json.mps(your_dict, ensure_ascii=False) # 将字典装化为json串
# ensure_ascii=False : 不用ascii,如果有中文的话,没有就无所谓了
file.write(json_str+'\n')
拿去 不谢~
--------------------------------------------------------------------------------
输出结果如下:
{"a": 0.123, "c": 0.2, "b": [1.1, 1.2, 1.3, 1.4, 1.5]}
--------------------------------------------------------------------------------------
就是不知道为什么c在中间(0.0)
F. python json怎么修改json数据
Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。现在也常用于http请求中,所以对json的各种学习,是自然而然的事情。Python的官网网址:https://docs.python.org/2/library/json.html?highlight=json#mole-json
Json API 使用:python在版本2.6之前,是需要先下载包,安装后才能使用的,有点类似现在的RF内使用SeleniumLibrary一样。但是在2.6中,官方文档(https://docs.python.org/2.6/whatsnew/2.6.html)明显指出,“有一些重要的新的软件包添加到了标准库,比如multiprocessing 和json,但是跟python 3比,2.6的这些包不会引进更多的新功能。"于是安装python2.6以上版本的童鞋,可以不需要下载json包,直接在所需的地方就import json 即可使用,在安装目录下的Lib 下,看到这两个包(点进去仔细阅读这些源码,会有更多的收获,)如下文所示: