数据存储之json文件处理和csv文件处理
什么是json:
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。更多解释请见:https://baike.baidu.com/item/JSON/2462549?fr=aladdin
JSON支持数据格式:
- 对象(字典)。使用花括号。
- 数组(列表)。使用方括号。
- 整形、浮点型、布尔类型还有null类型。
- 字符串类型(字符串必须要用双引号,不能用单引号)。
多个数据之间使用逗号分开。
注意:json本质上就是一个字符串。
字典和列表转JSON:
import json books = [
{
'title': '钢铁是怎样练成的',
'price': 9.8
},
{
'title': '红楼梦',
'price': 9.9
}
] json_str = json.dumps(books,ensure_ascii=False)
print(json_str)
因为json在dump的时候,只能存放ascii的字符,因此会将中文进行转义,这时候我们可以使用ensure_ascii=False关闭这个特性。
在Python中。只有基本数据类型才能转换成JSON格式的字符串。也即:int、float、str、list、dict、tuple。
将json数据直接dump到文件中:
json模块中除了dumps函数,还有一个dump函数,这个函数可以传入一个文件指针,直接将字符串dump到文件中。示例代码如下:
books = [
{
'title': '钢铁是怎样练成的',
'price': 9.8
},
{
'title': '红楼梦',
'price': 9.9
}
]
with open('a.json','w') as fp:
json.dump(books,fp)
将一个json字符串load成Python对象:
json_str = '[{"title": "钢铁是怎样练成的", "price": 9.8}, {"title": "红楼梦", "price": 9.9}]'
books = json.loads(json_str,encoding='utf-8')
print(type(books))
print(books)
直接从文件中读取json:
import json
with open('a.json','r',encoding='utf-8') as fp:
json_str = json.load(fp)
print(json_str)
csv文件处理
csv文件处理
读取csv文件:
import csv
with open('stock.csv','r') as fp:
reader = csv.reader(fp)
titles = next(reader)
for x in reader:
print(x)
这样操作,以后获取数据的时候,就要通过下表来获取数据。如果想要在获取数据的时候通过标题来获取。那么可以使用DictReader。示例代码如下:
读取csv文件:
import csv
with open('stock.csv','r') as fp:
reader = csv.reader(fp)
titles = next(reader)
for x in reader:
print(x)
这样操作,以后获取数据的时候,就要通过下表来获取数据。如果想要在获取数据的时候通过标题来获取。那么可以使用DictReader。示例代码如下:
import csv
with open('stock.csv','r') as fp:
reader = csv.DictReader(fp)
for x in reader:
print(x['turnoverVol'])
写入数据到csv文件:
写入数据到csv文件,需要创建一个writer对象,主要用到两个方法。一个是writerow,这个是写入一行。一个是writerows,这个是写入多行。示例代码如下:
import csv headers = ['name','age','classroom']
values = [
('zhiliao',18,'111'),
('wena',20,'222'),
('bbc',21,'111')
]
with open('test.csv','w',newline='') as fp:
writer = csv.writer(fp)
writer.writerow(headers)
writer.writerows(values)
也可以使用字典的方式把数据写入进去。这时候就需要使用DictWriter了。示例代码如下:
import csv headers = ['name','age','classroom']
values = [
{"name":'wenn',"age":20,"classroom":'222'},
{"name":'abc',"age":30,"classroom":'333'}
]
with open('test.csv','w',newline='') as fp:
writer = csv.DictWriter(fp,headers)
writer = csv.writeheader()
writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'})
writer.writerows(values)
笔记
import csv # 通过下标读取文件
# def read_csv_demo():
# with open('', 'r') as fp:
# # reader是一个迭代器
# reader = csv.reader(fp)
# # next 会对迭代器会从开始位置加一位
# next(reader)
# for x in reader:
# name = [3]
# other = [-1]
# print({'name': name, 'other': other}) # 通过字典读取文件
# def read_csv_demo2():
# with open('', 'r') as fp:
# # 使用DictReader创建的reader对象
# # 不会包含的那行数据
# reader = csv.DictReader(fp)
# for x in reader:
# value = {'name':x['name'],'other':x['other']}
# print(value) # 通过写入文件
def read_csv_demo3():
headers = ['username', 'age', 'height'] values = [
{'张三', '18', '156'},
{'李四', '19', '184'},
{'王五', '20', '168'}
] # newline 是写入一行后做的事
with open('classroom.csv', 'w', encoding='utf-8', newline='') as fp:
writer = csv.writer(fp)
# 写入表头
writer.writerow(headers)
# 写入数据
writer.writerows(values) # 通过字典写入文件
def read_csv_demo4():
headers = ['username', 'age', 'height'] values = [
{'username':'张三', 'age':18, 'height':156},
{'username':'李四', 'age':19, 'height':184},
{'username':'王五', 'age':20, 'height':168}
]
# newline 是写入一行后做的事
with open('classroom2.csv', 'w', encoding='utf-8', newline='') as fp:
writer = csv.DictWriter(fp,headers)
# 写入表头数据的时候,需要执行writeheader函数
writer.writeheader()
writer.writerows(values) if __name__ == '__main__':
read_csv_demo4()
数据存储之json文件处理和csv文件处理的更多相关文章
- python3下scrapy爬虫(第九卷:scrapy数据存储进JSON文件)
将爬取数据存储在JSON文件里并不难,只需修改pipelines文件 直接看代码: 来看下结果: 中文字符恶心的很 之后我会在后卷中做出修改
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
- Python中如何将数据存储为json格式的文件
一.基于json模块的存储.读取数据 names_writer.py import json names = ['joker','joe','nacy','timi'] filename='names ...
- pandas.DataFrame——pd数据框的简单认识、存csv文件
接着前天的豆瓣书单信息爬取,这一篇文章看一下利用pandas完成对数据的存储. 回想一下我们当时在最后得到了六个列表:img_urls, titles, ratings, authors, detai ...
- C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件
/// <summary> /// 写入数据到CSV文件,覆盖形式 /// </summary> /// <param name="csvPath"& ...
- 大数据学习之路又之从csv文件到sql文件的操作过程
根据前几天的测试,简单的做个总结 csv文件的字段说明: 1.将csv文件上传到虚拟机中 在SecureCRT中点击,创建目录,直接把文件从本地拖拽进去 我放在了/linmob/data的路径下,所以 ...
- Java列表分页查询结果导出到CSV文件,导入CSV文件并解析
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- js实现使用文件流下载csv文件
1. 理解Blob对象 在Blob对象出现之前,在javascript中一直没有比较好的方式处理二进制文件,自从有了Blob了,我们就可以使用它操作二进制数据了.现在我们开始来理解下Bolb对象及它的 ...
- scrapy生成csv文件空行、csv文件打开乱码(解决方案)
一.scrapy生成csv文件会有多余的空行 当使用scrapy crawl testspider -o test.csv后,生成的默认csv文件每一行之间是有空行的,解决的方法是修改scrapy的源 ...
随机推荐
- 记录一个调试REST风格的web服务的client
coogle浏览器的advanced rest client很好用,记录一下,脑子不好,容易忘,,可以在chrome 的网上应用店添加 Rest client是用来调试REST风格的Web服务,接收P ...
- ElasticSearch 全文检索— ElasticSearch 核心概念
ElasticSearch核心概念-Cluster 1)代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字 ...
- ajax无刷新评论示例
下面就为大家带来一篇 ajax无刷新评论示例.学习还是有点帮助的,给大家做个参考吧. 这是留言板的界面,当用户点击提交留言的时候,自动提交到我的留言下面 留言内容中为空,或者为灰色的“没有填写留言内容 ...
- RPC框架设计思路
RPC是指远程过程调用 1.要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输.连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远 ...
- 《C#高效编程》读书笔记06-理解几个等同性判断之间的关系
当创建自定义类型时(无论是class还是struct),应为类型定义"等同性"的含义.C#提供了4种不同的函数来判断两个对象是否"相等": public sta ...
- System path '/Users/hxy/Library/Caches/PyCharm2018.2' is invalid.
Mac系统下安装pycharm后启动出现System path '/Users/hxy/Library/Caches/PyCharm2018.2' is invalid.问题: 1.出现原因: 1.1 ...
- 2 cmd中startup显示运行不了显示“不是内部或外部命令”
解决方案: 1 在C:\Windows\System32中检查cmd.exe是否存在(如果存在的话)(检查cmd.exe是否被误删) 2 在我的电脑——属性——环境变量——在系统变量找到Path编辑前 ...
- 从零开始的全栈工程师——js篇2.17(属性和节点获取)
DOM 一.节点树状图 Document>documentElement>body>tagname 二.常用的节点类型 元素节点(标签) 文本节点(文本节点) 属性节点(标签里的属性 ...
- C++ 强制类型转换(转载)
转载自:http://www.weixueyuan.net/view/6329.html 在C++语言中新增了四个关键字static_cast.const_cast.reinterpret_cast和 ...
- [转]ubuntu16.04安装teamviewer12依赖包解决
安装teamviewer下载地址:http://www.teamviewer.com/en/download/linux/ 下载的是:teamviewer_12.0.76279_i386.deb ...