Всем добрый день!
Было такое задание - сделать конвертер из .csv в .json без использования модуля csv в формате списка словарей. И был дан исходный файл - input.csv. Я все сделала, ответ сходится, но! Сделала я это криво и с привязкой к числу строк в исходном файле. Собственно, мне бы хотелось получить помощь на тему того, как изменить код, чтоб он был без привязки к числу строк. То есть, чтоб не надо было плодить кучу словарей и if-ов в коде, как у меня сейчас.
Вот мой код:
input.csv прилагаю и заранее благодарю за помощь!
Было такое задание - сделать конвертер из .csv в .json без использования модуля csv в формате списка словарей. И был дан исходный файл - input.csv. Я все сделала, ответ сходится, но! Сделала я это криво и с привязкой к числу строк в исходном файле. Собственно, мне бы хотелось получить помощь на тему того, как изменить код, чтоб он был без привязки к числу строк. То есть, чтоб не надо было плодить кучу словарей и if-ов в коде, как у меня сейчас.
Вот мой код:
Python:
import json
INPUT_FILE = "input.csv"
def csv_to_list_dict(filename, delimiter=',', new_line='\n'):
with open(filename) as f:
dict1 = {}
dict2 = {}
dict3 = {}
dict4 = {}
heads = []
res = [dict1, dict2, dict3, dict4]
for index, line in enumerate(f):
if index == 0:
l_str = line.strip(new_line)
l_spl = l_str.split(delimiter)
for word in l_spl:
heads.append(word)
else:
l_str = line.strip(new_line)
l_spl = l_str.split(delimiter)
for i, j in enumerate(heads):
if index == 1:
dict1[heads[i]] = l_spl[i]
elif index == 2:
dict2[heads[i]] = l_spl[i]
elif index == 3:
dict3[heads[i]] = l_spl[i]
elif index == 4:
dict4[heads[i]] = l_spl[i]
return res
print(json.dumps(csv_to_list_dict(INPUT_FILE), indent=4))
input.csv прилагаю и заранее благодарю за помощь!
Вложения
Последнее редактирование модератором: