• 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" }]
  • 相关阅读:
    [置顶] 十年博客行
    计算机编程语言年史
    初步认知MySQL metadata lock(MDL)
    Oracle语句优化规则(二)
    正则表达式
    sql server中的 SET NOCOUNT ON 的含义
    SQO (标准查询运算符)方法 & Linq To Object
    C# 扩展
    特性
    C#之泛型
  • 原文地址:https://www.cnblogs.com/lisa2016/p/10937693.html
Copyright © 2020-2023  润新知