как из файла по ключу добавить в словарь все данные

Fortron

Новичок
Пользователь
Май 3, 2020
44
2
8
Есть данные,которые записаны в файл. Есть так называемый ключ "title" . После него идет двоеточие и текст. Мне нужно из файла записать все данные в словарь.

Как-то надо вот эти данные в словарь записать:
Причем "title" - как бы ключ, а "Холодильник Side by Side" меняющиеся данные, их там порядка 19 разных наименований нужно в словарь записать.


Код:
"title":"Холодильник Side by Side"

Вот часть данных в файле.

Код:
 [<form action="/fater/json/productlist?type=PRODUCT_LIST" class="js-ajax-request" data-ajax='{"url":"/fater/json/productlist?type=PRODUCT_LIST" ,  "requestParamSeries": [{"name":"standardFilters","checkFor":"values"},{"name":"rangeFilters","checkFor":"minValue","checkFor2":"maxValue"}], "dataRendering":true, "method":"POST"}' data-ajax-id="ajax-productlist" data-current-state-ajax-uri="/fater/json/productlist?categoryString=outletproducts&amp;type=PRODUCT_LIST" id="command" method="post" onsubmit="return false;"><script data-init-data="ajax-productlist" data-no-initial-callup="true" type="application/json">
                        {"response":{"cheap":"0","expensive":"0","items":[{"productIndex":"0","sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,"headers":["iQ500","Холодильник Side by Side","","177 x 91 cm","Inox-easyclean","KA90IVI20R"],"price":{"value":164990.0,"displayValue":"164 990,00 ₽"},"stockStatus":{"trafficLight":"green","text":"[G11]","buyable":true,"permanentlyNotAvailable":false},"link":"/fater/outlet/KA90IVI20R?breadcrumb=","productImage":{"src":"//media3.123.com/Product_Shots/{width}x{height}/MCSA00762608_E6797_KA90IVI20G_407519_def.jpg","alt":"KA90IVI20R"},"hookline":"Холодильник coolDuo серии iQ 500 типа \"side-by-side\" с технологией NoFrost, дополнительно оснащен дозатором для воды и льда.","keyBenefits":["Многопоточная система охлаждения multiAirflow обеспечивает равномерное распределение воздуха и охлаждение на всех уровнях холодильника.","Технология noFrost защищает от образования инея и избавит вас от необходимости размораживать холодильник.","Холодильник шириной 70см - существенное увеличение полезного объема для хранения продуктов.","Функция superFreezing понижает температуру на заданный промежуток времени, чтобы быстрее заморозить только что добавленные продукты.","Функция superCooling, или 'суперохлаждение', уменьшает температуру на заданное время,
 

MaksimD

Пользователь
Пользователь
Май 12, 2020
51
11
8
Вот часть данных в файле.

Код:
 [<form action="/fater/json/productlist?type=PRODUCT_LIST" class="js-ajax-request" data-ajax='{"url":"/fater/json/productlist?type=PRODUCT_LIST" ,  "requestParamSeries": [{"name":"standardFilters","checkFor":"values"},{"name":"rangeFilters","checkFor":"minValue","checkFor2":"maxValue"}], "dataRendering":true, "method":"POST"}' data-ajax-id="ajax-productlist" data-current-state-ajax-uri="/fater/json/productlist?categoryString=outletproducts&amp;type=PRODUCT_LIST" id="command" method="post" onsubmit="return false;"><script data-init-data="ajax-productlist" data-no-initial-callup="true" type="application/json">
                        {"response":{"cheap":"0","expensive":"0","items":[{"productIndex":"0","sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,"headers":["iQ500","Холодильник Side by Side","","177 x 91 cm","Inox-easyclean","KA90IVI20R"],"price":{"value":164990.0,"displayValue":"164 990,00 ₽"},"stockStatus":{"trafficLight":"green","text":"[G11]","buyable":true,"permanentlyNotAvailable":false},"link":"/fater/outlet/KA90IVI20R?breadcrumb=","productImage":{"src":"//media3.123.com/Product_Shots/{width}x{height}/MCSA00762608_E6797_KA90IVI20G_407519_def.jpg","alt":"KA90IVI20R"},"hookline":"Холодильник coolDuo серии iQ 500 типа \"side-by-side\" с технологией NoFrost, дополнительно оснащен дозатором для воды и льда.","keyBenefits":["Многопоточная система охлаждения multiAirflow обеспечивает равномерное распределение воздуха и охлаждение на всех уровнях холодильника.","Технология noFrost защищает от образования инея и избавит вас от необходимости размораживать холодильник.","Холодильник шириной 70см - существенное увеличение полезного объема для хранения продуктов.","Функция superFreezing понижает температуру на заданный промежуток времени, чтобы быстрее заморозить только что добавленные продукты.","Функция superCooling, или 'суперохлаждение', уменьшает температуру на заданное время,
Я немного подправил твой респонс, а так работает. Проверяй!

Python:
su = [{"response":{"cheap":"0",
                   "expensive":"0",
                   "items":[
                             {"productIndex":"0",
#                              "sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,
                              "sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":"false","comparable":"true","productsInComparisonSize":"0",
                              "headers":["iQ500","Холодильник Side by Side","","177 x 91 cm","Inox-easyclean","KA90IVI20R"],
                              "price":{"value":164990.0,"displayValue":"164 990,00 ₽"},"stockStatus":{"trafficLight":"green","text":"[G11]","buyable":"true","permanentlyNotAvailable":"false"},
                              "link":"/fater/outlet/KA90IVI20R?breadcrumb=",
                              "productImage":{"src":"//media3.123.com/Product_Shots/{width}x{height}/MCSA00762608_E6797_KA90IVI20G_407519_def.jpg","alt":"KA90IVI20R"},
                              "hookline":"Холодильник coolDuo серии iQ 500 типа \"side-by-side\" с технологией NoFrost, дополнительно оснащен дозатором для воды и льда.",
                              "keyBenefits":["Многопоточная система охлаждения multiAirflow обеспечивает равномерное распределение воздуха и охлаждение на всех уровнях холодильника.","Технология noFrost защищает от образования инея и избавит вас от необходимости размораживать холодильник.","Холодильник шириной 70см - существенное увеличение полезного объема для хранения продуктов.","Функция superFreezing понижает температуру на заданный промежуток времени, чтобы быстрее заморозить только что добавленные продукты.","Функция superCooling, или 'суперохлаждение', уменьшает температуру на заданное время,"]
                             }]
                   }
       }]
                  


#количество ключей в soup
n = len(su)
for i in range(n):
    print(i)

file = open("out.txt", 'w')
listK = []
listK = su[0].keys()
print(listK)

for i in range(n):
    
    for keys in su[0]['response']['items']:
     #   print(keys)
        # file.write(keys["hookline"]
        print(keys["hookline"])
        print(keys["title"])
  #      if keys == 'title':
        res = str(keys["title"])
        hl = str(keys["hookline"])
        print("Title: {}".format(i, res))
        file.write("Title: {}\n".format( res))
        file.write("hookline: {}\n".format( hl))
file.write("Количество ключе: %d\n" %n)
file.close()
print("Done.")
out.txt

Код:
Title: Холодильник Side by Side
hookline: Холодильник coolDuo серии iQ 500 типа "side-by-side" с технологией NoFrost, дополнительно оснащен дозатором для воды и льда.
Количество ключе: 1
 
  • Мне нравится
Реакции: Fortron

Fortron

Новичок
Пользователь
Май 3, 2020
44
2
8
Мне нужно работать с данными ,которые я предоставил без изменения.
Зачем закомментировал строчку? -
Код:
"sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,

Я проверил вот этот код. Без комментария - ошибка в коде, с комментарием - выводит 0
Код:
su = [{"response":{"cheap":"0",
                   "expensive":"0",
                   "items":[
                             {"productIndex":"0",
#                              "sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,
                              "sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":"false","comparable":"true","productsInComparisonSize":"0",
                              "headers":["iQ500","Холодильник Side by Side","","177 x 91 cm","Inox-easyclean","KA90IVI20R"],
                              "price":{"value":164990.0,"displayValue":"164 990,00 ₽"},"stockStatus":{"trafficLight":"green","text":"[G11]","buyable":"true","permanentlyNotAvailable":"false"},
                              "link":"/fater/outlet/KA90IVI20R?breadcrumb=",
                              "productImage":{"src":"//media3.123.com/Product_Shots/{width}x{height}/MCSA00762608_E6797_KA90IVI20G_407519_def.jpg","alt":"KA90IVI20R"},
                              "hookline":"Холодильник coolDuo серии iQ 500 типа \"side-by-side\" с технологией NoFrost, дополнительно оснащен дозатором для воды и льда.",
                              "keyBenefits":["Многопоточная система охлаждения multiAirflow обеспечивает равномерное распределение воздуха и охлаждение на всех уровнях холодильника.","Технология noFrost защищает от образования инея и избавит вас от необходимости размораживать холодильник.","Холодильник шириной 70см - существенное увеличение полезного объема для хранения продуктов.","Функция superFreezing понижает температуру на заданный промежуток времени, чтобы быстрее заморозить только что добавленные продукты.","Функция superCooling, или 'суперохлаждение', уменьшает температуру на заданное время,"]
                             }]
                   }
       }]
                 


#количество ключей в soup
n = len(su)
for i in range(n):
    print(i)
 
Последнее редактирование:

MaksimD

Пользователь
Пользователь
Май 12, 2020
51
11
8
Мне нужно работать с данными ,которые я предоставил без изменения.
Зачем закомментировал строчку? -
Код:
"sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,

Я проверил вот этот код. Без комментария - ошибка в коде, с комментарием - выводит 0
Код:
su = [{"response":{"cheap":"0",
                   "expensive":"0",
                   "items":[
                             {"productIndex":"0",
#                              "sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,
                              "sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":"false","comparable":"true","productsInComparisonSize":"0",
Тут "true" и "0" нужны кавычки "comparable":"true","productsInComparisonSize":"0", без кавычек не работает. Поэтому и закоментил твою строку.
 

Форум IT Специалистов