• python优雅写出文件之csv


    将各种常见的数据类型写出到csv
    持续更新…

    预计收录:list(√)、dict(√)、numpy 等写出到csv

    1. 列表写出到csv

    import csv
    
    data_list = [['John', 23, 'USA'],
             ['Jose', 44, 'Spain'],
             ['Anne', 29, 'UK'],
             ['Japan', 35, 'Lee']]
    
    with open('data_list.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        for row in data_list:
            writer.writerow(row)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    data_list.csv内容

    John,23,USA
    Jose,44,Spain
    Anne,29,UK
    Japan,35,Lee
    
    • 1
    • 2
    • 3
    • 4


    2. 字典写出到csv

    import csv
    
    data = {'Name': 'John', 'Age': '23', 'Country': 'USA'}
    
    with open('data.csv', 'w', newline='') as f:
        writer = csv.writer(f)
        for k, v in data.items():
            writer.writerow([k, v])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    data.csv 内容

    Name,John
    Age,23
    Country,USA
    
    • 1
    • 2
    • 3


    3. 字典数组写出到csv

    import csv
    
    labels = ['Name', 'Age', 'Country']
    dct_arr = [
      {'Name': 'John', 'Age': '23', 'Country': 'USA'},
      {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'},
      {'Name': 'Anne', 'Age': '29', 'Country': 'UK'},
      {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}
    ]
    # 用异常处理来包装操作文件的代码,可以防止外部错误或关于文件写入过程的不兼容。
    # 字典的kv对顺序可以与labels不一致,可以缺少,但不能有labels不存在的key
    try:
        with open('data_dict.csv', 'w', encoding='utf-8', newline='') as f:
            writer = csv.DictWriter(f, fieldnames=labels)
            writer.writeheader()
            for elem in dct_arr:
                writer.writerow(elem)
    except IOError:
        print("I/O error")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    data_dict.csv 内容

    Name,Age,Country
    John,23,USA
    Jose,44,Spain
    Anne,29,UK
    Lee,35,Japan
    
    • 1
    • 2
    • 3
    • 4
    • 5

    参考: 在 Python 中将字典写入 CSV

    小结:字典数组比嵌套列表更能保证数据可靠哦~



    n. 补充: import json

    1. 字典写出到 json

    import json
    
    with open('data.json', 'w', encoding='utf-8')as f:
        # ensure_ascii=False   实现中文写入时  保存成中文
        json.dump({'aa':'bb'}, f, ensure_ascii=False, indent=2)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1(逆). 从 json文件写到python

    import json
    
    with open('data.json', 'r', encoding='utf-8')as f:
        data = json.load(f)
        print(data)   #{'aa': 'bb'}
        # print(type(data))   #
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 字典数组写出到 json

    import json
    data_list = [
        {'Name': 'John', 'Age': '23', 'Country': 'USA'},
        {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'},
        {'Name': 'Anne', 'Age': '29', 'Country': 'UK'},
        {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}
    ]
    with open('data.json', 'w', encoding='utf-8')as f:
        # ensure_ascii=False:不使用ascii,能将unicode字符(形如\uxxxx)显示为中文
        # indent=5:缩进5,json展示更美观
        f.write(json.dumps(data_list, ensure_ascii=False, indent=5))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    data.json内容:

    [
         {
              "Name": "John",
              "Age": "23",
              "Country": "USA"
         },
         {
              "Name": "Jose",
              "Age": "44",
              "Country": "Spain"
         },
         {
              "Name": "Anne",
              "Age": "29",
              "Country": "UK"
         },
         {
              "Name": "Lee",
              "Age": "35",
              "Country": "Japan"
         }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2(逆). json文件写入为python的字典数组类型

    将data.json文件内容读到data_list(列表的每个元素为dict):

    import json
    with open("data.json","r") as f:
        data_list = json.load(f)
        print(data_list)
        # [{'Name': 'John', 'Age': '23', 'Country': 'USA'}, {'Name': 'Jose', 'Age': '44', 'Country': 'Spain'}, {'Name': 'Anne', 'Age': '29', 'Country': 'UK'}, {'Name': 'Lee', 'Age': '35', 'Country': 'Japan'}]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    VM配置centos7 DHCP服务器步骤(linux系统)
    vite和webpack的区别
    熊市来临,加密货币公司将广告支出削减了 90%
    1109. 航班预订统计
    持续性能优化:确保应用保持高性能
    算法专题:双指针
    网页制作基础大二dw作业HTML+CSS+JavaScript云南我的家乡旅游景点
    大学生必看!这些关乎你“钱途”的内容你一定要知道NISP一级证书
    Blender Shape Keys简明教程【Morph Target】
    SaaS系统为何一直不被信赖
  • 原文地址:https://blog.csdn.net/weixin_45426939/article/details/128049483