数据转化与数据存储

json字符串介绍

  JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 语法规则
JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名;JSON是一个序列化的对象或数组。

  1. 六个构造字符:
    begin-array = ws %x5B ws ; [ 左方括号
    begin-object = ws %x7B ws ; { 左大括号
    end-array = ws %x5D ws ; ] 右方括号
    end-object = ws %x7D ws ; } 右大括号
    name-separator = ws %x3A ws ; : 冒号
    value-separator = ws %x2C ws ; , 逗号
  2. 在这六个构造字符的前或后允许存在无意义的空白符(ws):
    ws = *(%x20 /; 空间
    %x09 /; 水平标签
    %x0A /; 换行或换行
    %x0D); 回程

将python对象转化为json字符串

import json

#  将python对象转化为json字符串


persons =[
    {
        'username': 'zhiliao',
        'age': 18,
        'country': "china"
    },
    {
        'username': '张三',
        'age': 20,
        'country': "china"
    
    }
]
# json_str = json.dumps(persons)
# print(type(json_str))
# print(json_str)


#  将json字符串存储到文件当中
# json_str = json.dumps(persons)
with open('json.json', 'w', encoding='utf-8') as f:
    # f.write(json_str)
   json.dump(persons, f, ensure_ascii=False)

将json字符串load程python对象

import json                                                                                 
                                                                                            
# json_str = '[{"username": "zhiliao", "age": 18, "country": "china"}, ' \                  
#            '{"username": "张三", "age": 20, "country": "china"}]'                           
#                                                                                           
# persons = json.loads(json_str)                                                            
# print(type(persons))                                                                      
# for person in persons:                                                                    
#     print(person)                                                                         
#                                                                                           
with open('json.json', 'r', encoding='utf-8')as f:                                          
    persons = json.load(f)                                                                  
    print(type(persons))                                                                    
    for person in persons:                                                                  
        print(person)                                                                       
                                                                                            

csv的简单介绍和演示

规则

  • 开头是不留空,以行为单位。
  • 可含或不含列名,含列名则居文件第一行。
  • 一行数据不跨行,无空行。
  • 以半角逗号(即,)作分隔符,列为空也要表达其存在。
  • 列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。
  • 文件读写时引号,逗号操作规则互逆。
  • 内码格式不限,可为 ASCII、Unicode 或者其他。
  • 不支持数字
  • 不支持特殊字符

读取演示

import csv

def read_csv_demo1():
    with open('123.csv', 'r', encoding='utf-8')as f:
        # reader是一个迭代器
        reader = csv.reader(f)
        next(reader)
        for x in reader:
            name = x[0]
            print({'name': name})


def read_csv_demo2():
    with open('123.csv', 'r', encoding='utf-8')as f:
        #  使用DictReader创建出来的对象不会包含标题那行的数据
        #  reader是个迭代器,遍历这个迭代器,返回出来的是一个字典
        reader = csv.DictReader(f)
        for x in reader:
            print(x)


if __name__ == '__main__':
    read_csv_demo2()
    read_csv_demo1()

写入演示
这边需要注意,写入的时候classroom1 classroom2这个两个文件的名字一定不能相同,否则后面就会把前面的进行覆盖

import csv


def csv_writer_demo1():
    headers = ['usename', 'age', 'height']
    value = [
        ('张三', 18, 200),
        ('lisi', 20, 210),
        ('老王', 50, 180)
    ]

    with open('classroom1.csv', 'w', encoding='utf-8')as f:
        writer = csv.writer(f)
        writer.writerow(headers)
        writer.writerows(value)


def csv_writer_demo2():
    headers = ['usename', 'age', 'height']
    value = [
        {'usename': 'zhangsan', 'age': 18, 'height': 'china'},
        {'usename': ']lisi', 'age': 19, 'height': 'us'},
        {'usename': 'ww', 'age': 28, 'height': 'china'},
    ]

    with open('classroom2.csv', 'w', encoding='utf-8')as f:
        writer = csv.DictWriter(f, headers)
        #  写入表头数据的时候,需要调用writerhead方法
        writer.writeheader()
        writer.writerows(value)


if __name__ == '__main__':
    csv_writer_demo1()
    csv_writer_demo2()
发布了61 篇原创文章 · 获赞 48 · 访问量 4452

猜你喜欢

转载自blog.csdn.net/weixin_45257157/article/details/103355709