数据存储之json文件处理和csv文件处理

admin5年前Python学习61

什么是json:

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。更多解释请见:https://baike.baidu.com/item/JSON/2462549?fr=aladdin

JSON支持数据格式:

  1. 对象(字典)。使用花括号。

  2. 数组(列表)。使用方括号。

  3. 整形、浮点型、布尔类型还有null类型。

  4. 字符串类型(字符串必须要用双引号,不能用单引号)。

多个数据之间使用逗号分开。
注意:json本质上就是一个字符串。

字典和列表转JSON:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import json
 
books = [
    {
        'title''钢铁是怎样练成的',
        'price'9.8
    },
    {
        'title''红楼梦',
        'price'9.9
    }
]
 
json_str = json.dumps(books,ensure_ascii=False)
print(json_str)

  

因为jsondump的时候,只能存放ascii的字符,因此会将中文进行转义,这时候我们可以使用ensure_ascii=False关闭这个特性。
Python中。只有基本数据类型才能转换成JSON格式的字符串。也即:intfloatstrlistdicttuple

将json数据直接dump到文件中:

json模块中除了dumps函数,还有一个dump函数,这个函数可以传入一个文件指针,直接将字符串dump到文件中。示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
books = [
    {
        'title''钢铁是怎样练成的',
        'price'9.8
    },
    {
        'title''红楼梦',
        'price'9.9
    }
]
with open('a.json','w') as fp:
    json.dump(books,fp)

将一个json字符串load成Python对象:

1
2
3
4
json_str = '[{"title": "钢铁是怎样练成的", "price": 9.8}, {"title": "红楼梦", "price": 9.9}]'
books = json.loads(json_str,encoding='utf-8')
print(type(books))
print(books)

直接从文件中读取json:

1
2
3
4
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文件:

1
2
3
4
5
6
7
import csv
 
with open('stock.csv','r') as fp:
    reader = csv.reader(fp)
    titles = next(reader)
    for in reader:
        print(x)

这样操作,以后获取数据的时候,就要通过下表来获取数据。如果想要在获取数据的时候通过标题来获取。那么可以使用DictReader。示例代码如下:

1
2
3
4
5
6
import csv
 
with open('stock.csv','r') as fp:
    reader = csv.DictReader(fp)
    for in reader:
        print(x['turnoverVol'])

写入数据到csv文件:

写入数据到csv文件,需要创建一个writer对象,主要用到两个方法。一个是writerow,这个是写入一行。一个是writerows,这个是写入多行。示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
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了。示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
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)

笔记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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()


标签: pythonjson

相关文章

python3 AES 加解密

12345678910111213141516171819202122232425262728#coding:utf-8import base64from Crypto.Ciphe...

Django2.0 path与Django1.x版本url正则匹配问题

Django2.0 path与Django1.x版本url正则匹配问题

1.0的时候Django是用 url()来匹配路由的,   2.0内的path匹配正则时候无效,  导入re_path即可匹配正则即可解决。 ...

python导出开发环境

python导出开发环境

1.导出开发环境的依赖包本地开发完后,再把代码给别人之前,需要1pip freeze > pip123.txt   2.其他环境安装依赖包1pip install -r pi...

pyinstaller使用-python项目转换成exe可执行文件

Python版本:Python3.5.2一、安装Pyinstaller1、安装pyinstaller使用pip命令安装:pip install pyinstaller1pip install...

Tesseract-ocr视觉学习-验证码识别及python import pytesseract使用

Tesseract-ocr视觉学习-验证码识别及python import pytesseract使用

 Tesseract-OCR的简单使用与训练  最近看到某个网站提交数据要提交验证码,用tesseract自带的识别,     识别出来是什么鬼,0-9识别成了什么玩意!   &n...

让PIP源使用国内镜像,提升下载速度和安装成功率。

对于Python开发用户来讲,PIP安装软件包是家常便饭。但国外的源下载速度实在太慢,浪费时间。而且经常出现下载后安装出错问题。所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
Music