[英]Converting a pipe delimited CSV file to a JSON file in a certain format
我正在嘗試將CSV文件的每一行都轉換為JSON格式。
當我將其轉換為JSON時,它在開頭和結尾都包含方括號,如何將其省略? 我也在尋找一種將管道值拆分成單獨愛好列表的方法。
這是我得到的輸出:
[
{
"Name": "John",
"Age": "23",
"Hobby": "Kayaking|Football",
"Location": "Miami",
"Profession": "Sales",
},
{
"Name": "Peter",
"Age": "35",
"Hobby": "Football|Basketball|Swimming",
"Location": "Turin",
"Profession": "Mechanic",
},
{
"Name": "James",
"Age": "50",
"Hobby": "Golf",
"Location": "Berlin",
"Profession": "Accountant",
}
]
我想要的輸出
{
"Name": "John",
"Age": "23",
"Hobby": ["Kayaking","Football"],
"Location": "Miami",
"Profession": "Sales",
},
{
"Name": "Peter",
"Age": "35",
"Hobby": ["Football","Basketball","Swimming"],
"Location": "Turin",
"Profession": "Mechanic",
},
{
"Name": "James",
"Age": "50",
"Hobby": "Golf",
"Location": "Berlin",
"Profession": "Accountant",
}
我的代碼:
import glob
import os
import csv
import json
if __name__ == '__main__':
csv.register_dialect('piper', delimiter='|', quoting=csv.QUOTE_NONE)
for filename in glob.glob('path_to_csv\file.csv'):
csvfile = os.path.splitext(filename)[0]
jsonfile = 'jsfile.json'
fieldnames = ("Name","Age","Hobby","Location", "Profession")
with open(csvfile+'.csv') as f:
reader = csv.DictReader(f,fieldnames)#, dialect='piper')
rows = list(reader)
with open(jsonfile, 'w') as f:
json.dump(rows, f, sort_keys=True, indent=2, separators=(',', ': '))
f.write('\n')
rows = list(reader)
由於它已經是列表,因此無需將其包裝到列表中。 刪除此線將固定支架。
for row in reader:
row['Hobby'] = list(row['Hobby'].split('|'))
我們需要拆分愛好字符串並將其轉換為列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.