#python #arrays #json
#python #массивы #json
Вопрос:
У меня есть этот файл json
https://pastebin.com/embed_js/PknXEGq2
и вот мой код до сих пор
import json
data = json.load(open('data.json'))
Product = []
Products = []
def get_products():
query_one = data['Bundles']
for first in query_one:
Product = first.get('Product') or []
for i in Product:
for key, val in i.items():
if key == None :
print(i.index(key) key)
elif key is False:
print("Error")
else:
print("You can buy " str(key) " at our store at " str(val))
Products = data['Bundles']
var_two = Products
for second in Products:
var_two = second.get('Products')
for j in var_two:
for key_two, val_two in j.items():
if key_two == None:
print(j.index(key_two) key_two)
elif key_two is False:
print("Error")
else:
print("You can buy " str(key_two) " at our store at " str(val_two))
return ""
get_products()
Проблема в том, что я не могу получить правильные значения и ключи для некоторых, так как я могу указать правильные элементы (название продукта и цену) Я хочу получить из файла json
Результат должен быть
Вы можете купить Tommee Tippee Ctn Transition Cup в нашем магазине по цене 12
Комментарии:
1. Можете ли вы добавить пример фактического вывода, который вам нужен?
2. Вы можете купить Tommee Tippee Ctn Transition Cup в нашем магазине по цене 12
Ответ №1:
import json
import sys
import os
data = json.load(open(os.path.dirname(sys.argv[0]) '/file.json'))
Product = []
Products = []
def get_products():
query_one = data['Bundles']
for first in query_one:
Product = first.get('Product') or []
for i in Product:
name = ""
price = ""
for key, val in i.items():
if key == None :
pass
elif key=="Price":
price = val
elif key=="Name":
name = val
print ("You can buy " str(name) " at the price " str(price))
get_products()
Это первый элемент, и это вывод:
You can buy Tommee Tippee Ctn Transition Cup at the price 12
Ответ №2:
Я переписал ваш код. Пожалуйста, проверьте, выполняет ли он вашу задачу :
import json
data = json.load(open('data.json'))
ignore_values = ["Size 6-12m amp; 1-2y", " 6-11kg Girl"]
def get_products():
bundles = data.get("Bundles")
for bundle in bundles:
products = bundle.get("Product")
if products:
for product in products:
product_name = product.get("Name", '')
product_price = product.get("Price", '')
if any(ignore_value in product_name for ignore_value in ignore_values):
for ignore_value in ignore_values:
product_name = product_name.replace(ignore_value, '')
print("You can buy {0} Ctn Transition Cup at our store at {1}".format(product_name, product_price))
products = bundle.get("Products")
if products:
for product in products:
product_name = product.get("Name", '')
product_price = product.get("Price", '')
if any(ignore_value in product_name for ignore_value in ignore_values):
for ignore_value in ignore_values:
product_name = product_name.replace(ignore_value, '')
print("You can buy {0} Ctn Transition Cup at our store at {1}".format(product_name, product_price))
get_products()
Комментарии:
1. Это действительно помогло, спасибо, у меня есть еще один вопрос, можно ли удалить «Размер 6-12 м и 1-2 года» и «Девочка весом 6-11 кг» из некоторых продуктов, я имею в виду дополнительное описание в названии этих продуктов
2. Я обновил код. Вы можете добавить то, что вам нужно удалить, в
ignore_values
список и проверить.