json一般在网络交互时用到较多
在线JSON解析及格式化网站 在这个网站里,把你爬下来的json格式数据复制进去,能以易于阅读的方式展示
JSON字符串介绍
注意本质上json就是一个字符串。json是一种轻量级的数据交换格式(详情见百科)
json支持数据格式:
- 对象(字典) :使用花括号
- 数组(列表) :使用方括号
- 字符串类型: 字符串必须使用双引号
- 整形,浮点型,布尔类型,NULL类型多个数据之间使用逗号分开
python对象转json
- dump函数,传入一个文件指针,直接将字符串dump到文件中。
import json
books = [
{
"name": "三国演义",
"price": 18.8 # python对象不用严格遵循json格式,转换成json时会自动转换。
},
{
"name": "水浒传",
'price': 19.9,
}
]
result = json.dumps(books,ensure_ascii=False) # json之传输ASCII码,让文字出现就打开这个参数
print(result)
print(type(result))
>>>
[{"name": "三国演义", "price": 18.8}, {"name": "水浒传", "price": 19.9}]
<class 'str'>
fp = open("books.json",'w',encoding='utf-8')
json.dump(books,fp,ensure_ascii=True) # dump 是对文件的操作
fp.close()
json转python
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))
>>>
<class 'str'>
[{'name': '三国演义', 'price': 18.8}, {'name': '水浒传', 'price': 19.9}]
<class 'list'> # 转换成列表形式
with open("books.json",'r',encoding='utf-8') as fp:
result = json.load(fp)
print(result)
print(type(result))
CSV文件
CSV (逗号分隔值文件格式) 编辑 讨论4
本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。
1. 读取csv 文件
import csv
with open("stock.csv",'r',encoding='gbk') as fp: # CSV文件使用GBK 格式,如果出现乱码还是用utf-8吧
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']) # 得到一个字典,获得头为secShortName列下的数据
2. 写入CSV文件
- 使用writerow:写入数据到csv文件,需要创建一个writer对象。主要使用两个方法,一个是writerow 写入一行,writerows 写入多行。
import csv
headers = ('name','age','height')
students = [
("张三",18,180),
("李四",19,190),
("王五",20,170)]
with open("students.csv",'w',encoding='utf-8',newline='') as fp:
# csv标准库中的writerow在写入文件时会加入'\r\n'作为换行符,if newline is '',换行符不会被转化,就不会有额外的空行了。。。。
writer = csv.writer(fp)
writer.writerow(headers) # 写入表头
writer.writerows(students) # 写入数据
- 使用DictWriter:使用字典的方式把数据写入进去,这样就需要DictWriter。
headers = ('name','age','height')
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)