数据的存储

1.TXT文本文件存储

此处省略。。。。。。。。。。

2.JSON文件存储

1.任何支持的数据类型都可以通过JSON来表示。

eg:字符串、数字、对象、数组等。下面介绍一下对象和数组。

① 对象

在JavaScript 中是用花括号{ }包围起来的内容,数据结构是{key1:value1,key2:value2,.....}

key表示对象的属性,可以使用整数或者字符串

value表示属性对应的值,可以是任意类型

② 数组

用中括号[ ]包围起来的内容,数据结构是["zz","asd",....]

数组也可以像对象那样使用键值结构,但还是索引结构用得更多。它的值可以是任意类型

[{ },{ }]

由[ ] 包围的内容相当于数组,数组的每个元素都可以是任意类型,这个实例的元素是对象,由{ }包围

2.介绍loads,load,dumps,dump方法

loads()方法将json文本字符串转为json对象,其操作对象是json字符串 (用于读取)

eg: with open("data.json","w",enconding = "utf-8") as csvfile:

str= file.read(); data = json.loads(str)

load ()与loads方法一样,不过它的操作对象的文件

eg: data = json.load(open('data.json',enconding='utf-8'))

dumps() 方法将json对象转换为json文本字符串 (用于写入)

dump()与dumps方法一样,不过它的操作对象的文件

3.用索引获取内容,推荐使用get方法,因为即使域名不存在,也不会报错,只会返回None值。

值得注意,json的数据需要用双引号包围起来,不能用单引号,否则就是报错。

4.写入数据的时候,在file.write(json.dumps(str,indent =2,ensure_ascii=False))

indent代表缩进字符的个数,用于美观

ensure_ascii = False 指定参数为False,以及规定文件输出的编码(enconding = "utf-8")保证中文的输出!

3.CSV文件存储

import csv

csvfile = open('data1.csv', 'w',newline='')
# 如果想修改行与列的分隔符,可以传入delimiter参数
writer = csv.writer(csvfile,delimiter=' ')
writer.writerow(['1001','name1',10])
writer.writerow(['1002','name2',20])
writer.writerow(['1003','name3',30])
writer.writerow(['1004','name4',40])
#  writerows的参数是二维列表
# writer.writerows([['1001','name1',10],['1002','name2',20],['1003','name3',30],['1004','name4',40]]) # 或者写入多行

# 一般爬取的都是结构化数据,一般会用字典来表示这种数据
# 添加中间参数newline=‘’,表示写完一行接着写第二行,排除中间出现一个大空行
with open('data2.csv', 'w',newline='') as csvfile:
    fieldnames = ['id','name','age']
    writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'id':'1001','name':'name1','age':'10'})
    writer.writerow({'id':'1002','name':'name2','age':'20'})
    writer.writerow({'id':'1003','name':'name3','age':'30'})

# 给open参数指定编码格式,写入中文内容。
with open('data2.csv','a',encoding='utf-8',newline='') as csvfile:
    fieldnames = ['id', 'name', 'age']
    writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
    writer.writerow({'id': '1004', 'name': 'name4', 'age': '40'})

# 读取内容
with open('data2.csv','r',encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)

# pandas 库
import pandas as pd
data = [
    {'id':'10001','name':'mike','age':'9999'}
]
df = pd.DataFrame(data)
df.to_csv('data1.csv',index=False)   # 保存数据

# 读取内容也包括前面的头标题
df = pd.read_csv('data1.csv')
print(df)

# 只读取数据的话
df = pd.read_csv('data1.csv')
data = df.values.tolist()  # 将数据转化为列表
print(data)

# 内容的遍历
df = pd.read_csv('data1.csv')
for index,row in df.iterrows():
    print(row.tolist())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值