Тестирование пользовательского ввода по файлу словаря (JSON) - PullRequest
0 голосов
/ 09 июля 2020

У меня был файл JSON, содержащий большой список элементов в следующем формате:

[{"sku":43900,"name":}]

1 Ответ

0 голосов
/ 10 июля 2020

Если вы попробуете это, надеюсь, это сработает для вас лучше:

key = input('Enter the key: ')

for item in range(len(json_data)):
   x = json_data[item]["name"]
   if x is None:
       continue
   else:
       y = x.split(' - ', 1)
       data = {k.lower(): v for k, v in zip(y[::2], y[1::2])}
       if key.lower() in data:
           print('The value is:', data[key])

Первый оператор запрашивает только один раз выбор (вы можете обернуть это в другой l oop, чтобы контролировать это) , вместо того, чтобы спрашивать пользователя о каждом элементе ваших данных.

Затем в l oop вы просматриваете данные, чтобы увидеть, соответствует ли вообще запись пользователя.

Меня немного интересует, почему вы никогда не добились успеха с предоставленными вами данными, но если в этом файле намного больше элементов, вы бы сравнивали их только по одному, поскольку вам нужно было вводить поиск термин для каждого элемента в файле, пока он ВНУТРИ l oop. ; -)

Для немного более простой версии, которую должно быть очень легко расширить:

entered = input('Enter the key: ')

for item in json_data:
   if item["name"].find(" - ") > 0:
       name, item_desc = item["name"].split(' - ', 1)
       
       if entered.lower() == name.lower():
           print('The value is:', item_desc)

Надеюсь, что это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...