如何根据数据的属性将数据分为几个不同的文件?

时间:2019-02-11 21:32:20

标签: python file-io

我正在尝试根据其属性将大量JSON数据分类为不同的文件。 JSON文件中的每个条目都有键“ Region”,我想将有关特定区域的所有信息存储在单独的文件中。例如,如果我们有区域['US', 'Canada', 'Korea'],我想拥有文件US.csv, Canada.csv, and Korea.csv。 (我正在处理实际数据中的〜15个区域)

JSON文件中条目的顺序未按区域排序,因此我不想每次记录条目时都打开/关闭。

现在我正在做类似的事情

`with open('US.csv', 'a') as usOut, \
      open('Canada.csv', 'a') as caOut, \
      open('Korea.csv', 'a') as krOut:
    fileNameMap = {'US': usOut, 'Canada': caOut, 'Korea': krOut}
    for entry in jsonData:
        fileNameMap[entry['Region']].write(...)
`

但是,由于我要处理的区域很多,因此每个区域都有一个with open ...会导致很多代码重复。我想知道是否有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

一个选项可能就是这样,但是请根据您的具体情况替换我在此处编写的字段:

countries = {'US':None,'Canada':None}
for country in countries:
    countryFile = country+'.txt'
    with open(countryFile, 'w') as f:
        f.write('cool')
        countries[country] = f
        f.close()