【问题标题】:Converting a pipe delimited CSV file to a JSON file in a certain format将管道分隔的 CSV 文件转换为特定格式的 JSON 文件
【发布时间】:2019-03-18 23:23:20
【问题描述】:

我正在尝试将 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')

【问题讨论】:

  • 你有一个项目列表,它以 JSON 格式表示,用逗号分隔这些项目并用括号括住集合。要求一个不带括号的列表的 JSON 表示是没有意义的——这在术语上是矛盾的。

标签: python json python-2.7 list csv


【解决方案1】:

rows = list(reader)

没有必要将它包装到列表中,因为它已经是一个列表。删除此行将修复括号。

for row in reader:
   row['Hobby'] = list(row['Hobby'].split('|'))

我们需要把兴趣串拆分成列表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2019-05-31
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多