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('\n').split(',')

json_file.write('[\n')
flag = 0
while csv_file.readline(): # 字符串列表轉化為數字列表 values = csv_file.readline().strip('\n').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(',\n') 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(',\n')寫入逗號和換行符則會發現,json的最后一行數據多出來一個逗號,刪除很麻煩

  所以,我直接用flag來進行判斷。當寫入第一行數據之后,在第二行數據寫入之前,先寫入逗號和換行符,則第二行數據會順利寫入

5、最重要的一點,我的兩個文件都是放在同一個項目的同一個文件夾中,希望大家參考代碼時,修改為自己的文件路徑。其余內容請閱讀代碼中的注釋。

 

json文件樣式(部分):

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM