Как классифицировать данные в несколько разных файлов в зависимости от атрибута данных? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь классифицировать большой кусок данных JSON в разные файлы на основе их атрибутов.Каждая запись в файле JSON имеет ключ «Регион», и я хотел бы хранить всю информацию о конкретном регионе в отдельных файлах.Например, если у нас есть регионы ['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 голосов
/ 12 февраля 2019

Вариант может быть таким, но заменив поля, которые я здесь написал, в соответствии с вашей конкретной ситуацией:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...