码迷,mamicode.com
首页 > Web开发 > 详细

数据存储——json、CSV

时间:2020-10-29 09:44:28      阅读:31      评论:0      收藏:0      [点我收藏+]

标签:ensure   str   try   交换   python对象   文本格式   编写   记录组   asc   

json

JSON(JavaScript Object Notation,JS对象标记)是一种轻重量级的数据交换。它是基于ECMAScript(w3c制定的js规范)的

一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。

易于人阅读和编写,同时也易于机器的解析和生成,并有效地提升网络传输效率。

JSON支持数据格式:

1. 对象(字典):使用花括号{};

2. 数组(列表):使用方括号[];

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

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

多个数据之间使用逗号分开。json本质上就是一个字符串。(https://www.json.cn校验json的格式是否正确

 

字典和列表转JSON

将python对象dumps为json字符串
import json
persons = [
    {
        username:zhangsan,
        age:18,
        cpuntry:China
    },
    {
        username: lisi,
        age: 20,
        cpuntry: China
    }
]

json_str = json.dumps(persons)
print(type(json_str))
print(json_str)
"""
输出结果:
<class ‘str‘>
[{"username": "zhangsan", "age": 18, "cpuntry": "China"}, {"username": "lisi", "age": 20, "cpuntry": "China"}]

"""

在python中,只有基本数据类型才能转换成JSON格式的字符串。即:int、float、 str、 list、 dic、t tuple。

将python对象dump到文件中

persons = [
    {
        username:张三,
        age:18,
        cpuntry:China
    },
    {
        username: 李四,
        age: 20,
        cpuntry: China
    }
]

with open(persion.json,w,encoding=utf-8) as fp:
    json.dump(persons,fp,ensure_ascii=False)

json 在 dump 的时候,只能存放 ascil 的字符,因此会将中文进行转义,可以使用 ensure_ascii=False 关闭这个特性。(不指定编码形式会出现乱码)

从文件中读取json:

 

with open(persion.json,r,encoding=utf-8) as fp:
    json_str = json.load(fp)
    print(json_str)

 

CSV 

‘CSV’并不是一种单一的、定义明确的格式。“CSV”泛指具有以下特征的任何文件:

1.纯文本。使用某个字符集,比如:ASCII、Uniconde、EBCDIC或GB2312等;

2. 有记录组成(每一行都是一条记录);

3. 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时候分隔符可以包括可选的空格);

4. 每条记录都有同样的字段序列。

 

读取CSV文件:

reader()

import csv
with open(stock.csv,r) as fp:
    reader = csv.reader(fp)
    next(reader) # 表头
    for x in reader:
        name = x[3]
        volumn = x[-1]
        print({name:name,volumn:volumn})

reader()读取数据时,要通过下标获取数据。如果要通过标题获取数据,那么使用DictReader。

with open(stock.csv,r) as fp:
    reader = csv.DictReader(fp)

    """
    使用DictReader创建的reader对象,不包括标题行的数据。reader是一个迭代器,遍历这个迭代器返回的是一个字典
    """
    for x in reader:
        value= {name:x[secshortName],
                volumn:x[turnoverVol]}
        print(value)


 

写入数据到CSV文件

writer有两种方法:一个是writerow,写入一行;一个是writerows,多行写入。

headers = [name, age, classroom]
values = [
    (zhangsan, 18, 111),
    (lisi, 20, 112),
    (wangwu, 21, 113)
]
with open(calssinfo.csv,w,newline=‘‘) as fp:
    writer = csv.writer(fp)
    writer.writerow(headers)
    writer.writerows(values)

 

也可以使用字典的方式把数据写入进去,这时候使用DictWriter。(字典的键要与标头保持一样)

headers = [name, age, country]
values = [

        {
            name:张三,
            age:18,
            country:China
        },
        {
            name: lisi,
            age: 20,
            country: China
        }


]
with open(calssinfo.csv,w,encoding=utf-8,newline=‘‘) as fp:
    writer = csv.DictWriter(fp,headers)
    # 写入表头数据的时候,需要调用writeheader() writer.writeheader() writer.writerows(values)

 

数据存储——json、CSV

标签:ensure   str   try   交换   python对象   文本格式   编写   记录组   asc   

原文地址:https://www.cnblogs.com/-hao-/p/13890085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!