• Python将csv文件转换为json文件


    import csv
    import json
    
    json_file = open('file.json', 'w+', encoding='utf-8')
    csv_file = open('1501.csv', 'r', encoding='utf-8')
    
    # 读取文件第一行不读取换行符作为json文件里每个数据的键值
    keys = csv_file.readline().strip('
    ').split(',')
    
    json_file.write('[
    ')
    flag = 0
    while csv_file.readline(): # 字符串列表转化为数字列表 values = csv_file.readline().strip(' ').split(',') values_temp = map(eval, values[0:2]) values_else = list(values_temp) values_else.append(values[2])
    # 用zip()函数将两个列表形成映射关系,创建字典 dic_temp = dict(zip(keys, values_else))
    # 将字典转化为字符串且带有缩进 # flag用于判断json文件中 "," 和换行的添加位置 json_str = json.dumps(dic_temp, indent=4)
    if flag == 1: json_file.write(', ') json_file.write(json_str) flag = 1 json_file.write(']') csv_file.close() json_file.close()

    代码解释:

    1、while csv_file.readline:

      循环读取csv文件的每一行,csv_flie为我的csv文件名字

    2、字符串列表转换为数字列表 

      我的csv文件中一行数据有三个元素,项目要求数据格式为前两个元素为数字类型,第三个为字符串类型

    3、用open()与readline()实现以行为单位读取文件时,读取出来的数据皆是字符串类型

      json使用write()写文件时,必须先用dumps()将数据转换成字符串再存入。

    4、关于flag

      若是直接在存入每一行之后,write(', ')写入逗号和换行符则会发现,json的最后一行数据多出来一个逗号,删除很麻烦

      所以,我直接用flag来进行判断。当写入第一行数据之后,在第二行数据写入之前,先写入逗号和换行符,则第二行数据会顺利写入

    5、最重要的一点,我的两个文件都是放在同一个项目的同一个文件夹中,希望大家参考代码时,修改为自己的文件路径。其余内容请阅读代码中的注释。

    json文件样式(部分):

  • 相关阅读:
    vue多项目的工程化部署
    vue+element项目部署到线上,icon图标不显示
    elementui的表格嵌套表单及校验demo
    借鉴微信小程序表单校验wxValidate的源码里边的正则
    vue中el-upload上传多图片且携带参数,批量而不是一张一张的解决方案
    Maven笔记
    《图解HTTP》摘要
    Java面向对象
    MySQL数据库学习记录
    Python二维数组操作
  • 原文地址:https://www.cnblogs.com/solititude/p/13819223.html
Copyright © 2020-2023  润新知