zoukankan      html  css  js  c++  java
  • python json格式和csv文件转换

    python json格式和csv文件转换

    上代码

     1 import csv
     2 import json
     3 
     4 '''
     5 json格式示例 
     6 [{ "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" }]
     7 '''
     8 #file:json to csv
     9 def transcsv(jsonpath, csvpath):
    10     json_file = open(jsonpath, 'r', encoding='utf8')
    11     csv_file = open(csvpath, 'w', newline='')
    12     #读文件
    13     ls = json.load(json_file)  #将json格式的字符串转换成python的数据类型,解码过程
    14     data = [list(ls[0].keys())]  # 获取列名,即key
    15     for item in ls:
    16         data.append(list(item.values()))  # 获取每一行的值value
    17     #写入文件
    18     for line in data:
    19         csv_file.write(",".join(line) + "
    ")  # 以逗号分隔一行的每个元素,最后换行 fw.close() #关闭csv文件
    20     #关闭文件
    21     json_file.close()
    22     csv_file.close()
    23 #file:csv to json
    24 def transjson(jsonpath, csvpath):
    25     fw = open(jsonpath, 'w', encoding='utf8')   # 打开csv文件
    26     fo = open(csvpath, 'r', newline='')    # 打开csv文件
    27 
    28     ls = []
    29     for line in fo:
    30         line = line.replace("
    ", "")  # 将换行换成空
    31         ls.append(line.split(","))  # 以,为分隔符
    32     #print(ls)
    33     #写入
    34     for i in range(1, len(ls)):  # 遍历文件的每一行内容,除了列名
    35         ls[i] = dict(zip(ls[0], ls[i]))  # ls[0]为列名,所以为key,ls[i]为value,
    36         # zip()是一个内置函数,将两个长度相同的列表组合成一个关系对
    37 
    38     json.dump(ls[1:], fw, sort_keys=True, indent=4)
    39     #将Python数据类型转换成json格式,编码过程
    40     #默认是顺序存放,sort_keys是对字典元素按照key进行排序
    41     #indet参数用语增加数据缩进,使文件更具有可读性
    42 
    43     # 关闭文件
    44     fo.close()
    45     fw.close()
    46 
    47 if __name__ == '__main__':
    48     #transcsv('./testcase/my.json', './testcase/my.csv')
    49     transjson('./testcase/write.json', './testcase/my.csv')

    my.json文件内容:

    [{ "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" }]
  • 相关阅读:
    Spark 1.1.0 安装测试 (分布式 Yarn-cluster模式)
    HBase Mac OSX 安装笔记
    hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
    ssh 配置自动登录
    CentOS 修改线程数限制等(limits.conf)
    Hadoop Mac OSX 安装笔记
    centos7安装及部署zabbix监控
    设置linux中Tab键的宽度(可永久设置)
    基于NFS共享存储实现KVM虚拟机动态迁移
    KVM虚拟化平台环境部署
  • 原文地址:https://www.cnblogs.com/lisa2016/p/10937693.html
Copyright © 2011-2022 走看看