Json
1.什么是Json
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于
ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解
析和生成,并有效地提升网络传输效率。更多解释请见:
https://baike.baidu.com/item/JSON/2462549?fr=aladdin
JSON支持数据格式:
对象(字典):使用花括号。
数组(列表):使用方括号。
字符串类型:字符串必须要用双引号,不能用单引号)。
整形、浮点型、布尔类型还有null类型。
多个数据之间使用逗号分开。
注意:json本质上就是一个字符串。
2.将Python对象dump成JSON字符串:
- dumps:把Python对象转换成JSON格式的字符串。
- dump:把Python对象转换成JSON格式的字符串,并且还可以接收一个文件指针fp参数,可以写入到文件中。
这两个方法都有一个ensure_ascii
参数,默认情况下这个参数的值是True,也就是说转换后的JSON字符串是只能存储ascii格式的,不能存储中文,如果想要存储成中文,那么可以将他设置为False。
示例:
import json
books = [
{
"name": "三国演义",
"price": 18.8
},
{
"name": "水浒传",
'price': 19.9,
}
]
# result = json.dumps(books,ensure_ascii=False)
# print(result)
# print(type(result))
fp = open("books.json",'w',encoding='utf-8')
json.dump(books,fp,ensure_ascii=False)
fp.close()
3.将JSON字符串load成Python对象:
- loads:将JSON字符串转换成Python对象。
- load:将JSON字符串转换成Python对象,并且是直接从文件中获取JSON字符串。
示例:
import json
json_str = '[{"name": "三国演义", "price": 18.8}, {"name": "水浒传", "price": 19.9}]'
# print(type(json_str))
# result = json.loads(json_str)
# print(result)
# print(type(result))
with open("books.json",'r',encoding='utf-8') as fp:
result = json.load(fp)
print(result)
print(type(result))
CSV
1.CSV文件读取的两种方式:
import csv
# 这种方式读取到的每一条数据是一个列表,所以需要通过下标的方式获取具体某一个值
# with open("stock.csv",'r',encoding='gbk') as fp:
# reader = csv.reader(fp)
# for x in reader:
# print(x[3])
# 这种方式读取到的每一条数据是一个字典,所以可以通过列名获取数据
with open("stock.csv",'r',encoding='gbk') as fp:
reader = csv.DictReader(fp)
for x in reader:
print(x['secShortName'])
2.CSV文件的写入的两种方式:
import csv
headers = ('name','age','height')
# 第一种方式
# students = [
# ("张三",18,180),
# ("李四",19,190),
# ("王五",20,170)
# ]
# with open("students.csv",'w',encoding='utf-8',newline='') as fp:
# writer = csv.writer(fp)
# writer.writerow(headers)
# writer.writerows(students)
# 第二种方式
students = [
{"name":"张三","age":18,"height":180},
{"name":"李四","age":19,"height":190},
{"name":"王五","age":20,"height":170}
]
with open("students.csv",'w',encoding='utf-8',newline='') as fp:
writer = csv.DictWriter(fp,headers)
# 虽然DictWriter创建的时候有一个headers,但是想要写入数据进去,还是需要调用
# writer.writeheader()方法,否则,表头数据写入不进去
writer.writeheader()
writer.writerows(students)
Excel
1.安装xlrd和xlwt
如果想要读写Excel文件,需要借助到两个库xlrd和xlwt,其中xlrd是用于读的,xlwt是用于写的,安装命令如下:
pip install xlrd
pip install xlwt
2.Sheet相关操作
一个Excel中可能有多个Sheet,那么可以通过以下方法来获取想要的Sheet信息:
import xlrd
workbook = xlrd.open_workbook("成绩表.xlsx")
# 获取所有的sheet名字
# print(workbook.sheet_names())
# 根据索引获取指定的sheet对象
# sheet = workbook.sheet_by_index(1)
# print(sheet.name)
# 根据名称获取指定的sheet对象
# sheet = workbook.sheet_by_name("2班")
# print(sheet.name)
# 获取所有的sheet对象
# sheets = workbook.sheets()
# for sheet in sheets:
# print(sheet.name)
# 获取指定sheet的行数和列数
sheet = workbook.sheet_by_index(0)
print({"rows":sheet.nrows,"cols":sheet.ncols})
3.cell相关操作
from xlrd.sheet import Cell
sheet = workbook.sheet_by_index(0)
# 1. sheet.cell(row,col):获取指定行和列的cell对象。
cell = sheet.cell(1,1)
print(cell.value)
# 2. sheet.row_slice(row,start_col,end_col):获取指定行的某几列的cell对象。
cells = sheet.row_slice(1,1,4)
for cell in cells:
print(cell.value)
# 3. sheet.col_slice(col,start_row,end_row):获取指定列的某几行的cell对象。
cells = sheet.col_slice(0,1,sheet.nrows)
for cell in cells:
print(cell.value)
# 4. sheet.cell_value(row,col):获取指定行和列的值。
cell_value = sheet.cell_value(0,1)
print(cell_value)
# 5. sheet.row_values(row,start_col,end_col):获取指定行的某几列的值。
cell_values = sheet.col_values(1,1,sheet.nrows)
print(cell_values)
# 6. sheet.col_values(col,start_row,end_row):获取指定列的某几行的值。
cell_values = sheet.row_values(1,1,sheet.ncols)
print(cell_values)
4.Cell的数据类型:
- xlrd.XL_CELL_TEXT(Text):文本类型。
- xlrd.XL_CELL_NUMBER(Number):数值类型。
- xlrd.XL_CELL_DATE(Date):日期时间类型。
- xlrd.XL_CELL_BOOLEAN(Bool):布尔类型。
- xlrd.XL_CELL_EMPTY:空白数据类型。
import xlrd
sheet = workbook.sheet_by_index(0)
# cell = sheet.cell(0,0)
# print(cell.ctype)
# 1. xlrd.XL_CELL_TEXT(Text):文本类型。
# print(xlrd.XL_CELL_TEXT)
# cell = sheet.cell(1,1)
# print(cell.ctype)
# 2. xlrd.XL_CELL_NUMBER(Number):数值类型。
# print(xlrd.XL_CELL_NUMBER)
# cell = sheet.cell(19,0)
# print(cell.ctype)
# 3. xlrd.XL_CELL_DATE(Date):日期时间类型。
# print(xlrd.XL_CELL_DATE)
# cell = sheet.cell(19,0)
# print(cell.ctype)
# 4. xlrd.XL_CELL_BOOLEAN(Bool):布尔类型。
# print(xlrd.XL_CELL_BOOLEAN)
cell = sheet.cell(1,1)
print(cell.ctype)
# 5. xlrd.XL_CELL_EMPTY:空白数据类型。
print(xlrd.XL_CELL_EMPTY)
5.写入Excel
写入Excel步骤如下:
- 导入xlwt模块。
- 创建一个Workbook对象。
- 创建一个Sheet对象。
- 把数据写入到Sheet下指定行和列中。如果想要在原来workbook对象上添加新的cell,那么需
要调用put_cell来添加。 - 保存成Excel文件。