您好,欢迎来到微智科技网。
搜索
您的当前位置:首页Python中Json串与csv的读写

Python中Json串与csv的读写

来源:微智科技网

一、json读写转化

1、转化为json串

import json
persons =[
    {
        'username':"张三",
        'age':10,
        'country':'china'
    },
    {
        'username': "hh",
        'age': 20,
        'country': 'china'
    }
]

print(type(persons))
#python 对象转化为json字符串
#只用int float str list dict tuple能转化为json字符串
#dumps  python 对象转化为json字符串,转化过程要不禁止ascii码,否则不显示中文
json_str = json.dumps(persons,ensure_ascii=False)
print(json_str)

print(type(json_str))
#文件的打开方式采用utf-8的格式打开
with open("a.json",'w',encoding='utf-8') as fp:
    fp.write(json_str)

结果:

json字符串内容:

2、json转化为list对象

#================================================
#json字符串转化为list对象
#load()将json字符串转化为list对象
#json_str接上面代码的结果
#person_py =[{"username": "张三", "age": 10, "country": "china"},  {"username": "hh", "age": 20, "country": "china"}]
person_py =json.loads(json_str)
print(type(person_py))
for item in person_py:
    print(item)

结果:

总结:

1、从结果上来看,json字符串与我们Python列表加字典组合的格式显示是一致的,但从类型上说确实改变。

2、dumps是用于转化为json字符串,注意中文的时候,禁止ascii编码(这是默认的)

3、loads用于json串转化为list对象

4、dump有丢入的意思,load有装上的意思。

口诀:丢入成json,装上成列表!!!

 

2、csv写操作

#encoding: utf-8

import csv

#将元组类型写入csv

def write_csv_demo1():
    headers = {'username','age','height'}
    #值为元组类型
    values ={
        ('张三',18,180),
        ('李四',19,190),
        ('王武',20,160)
    }
    #newline默认为\n,插入时,自动换行,
    with open('classroom.csv','w',encoding="utf-8",newline='')as fp:
        writer = csv.writer(fp)
        #插入一行
        writer.writerow(headers)
        writer.writerows(values)


#将字典类型写入csv
def write_csv_demo2():
    headers = {'username','age','height'}
    values = [
        {'username':'张三','age':18,'height':180},
        {'username': '李四', 'age': 19, 'height': 180},
        {'username': '王五', 'age': 20, 'height': 190}
    ]
    with open('classroo1.csv','w',encoding='utf-8',newline="") as fp:
        writer = csv.DictWriter(fp,headers)
        #传入的标头不会写入,写入表头数据的时候,需要调用writeheader方法
        writer.writeheader()
        writer.writerows(values)

# if __name__ == '__main__':
#     write_csv_demo2()


####################################################

#csv文件的读取

def read_csv_demo1():
    with open("classroo1.csv",'r',encoding='utf-8') as fp:
        #reader是一个迭代器
        reader = csv.reader(fp)
        #跳过表头
      #  next(reader)
        for x in reader:
            #print(x)
            name = x[0]
            age = x[1]
            print('name:'+name,"age:"+age)

def read_csv_demo2():
    # 使用DictReader创建的reader对象
    # 不包含标题那行
    # reader是一个迭代器,遍历这个迭代器,返回来的是一个字典
    with open("classroo1.csv",'r',encoding='utf-8') as fp:
        reader = csv.DictReader(fp)
        for x in reader:
            value = {"name": x["username"],'age' : x["age"]}
            print(value)
            #print(x)

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务