Как получить доступ к определенному элементу c в json и сравнить значения - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в json и кодировании. Я хочу прочитать файл json и отметить значение в «данных», чтобы проверить, не ниже ли значение 50 (в python). Я не знаю, как получить доступ к определенным значениям c и преобразовать их в int.

Ниже мой код и ошибка:

input = '{"data": 47.8,"code": "ABB","ID": "03"}'

var = json.loads(input)

for row in var:
    if input["data"] < 50:
        print(input["data"])

Error:
TypeError: string indices must be integers.

Ответы [ 4 ]

0 голосов
/ 28 мая 2020
import json
input = '{"data": 47.8,"code": "ABB","ID": "03"}'

var = json.loads(input)
print(var) 
# >>> {u'code': u'ABB', u'data': 47.8, u'ID': u'03'}
if var["data"] < 50:
    print(var["data"])

Приведенный выше код будет работать для указанного вами ввода. Если у вас несколько таких строк, просто перебирайте их и используйте указанную часть.

Кроме того, в вашем коде было несколько ошибок, а именно:

  1. Вы повторяете одна запись.
  2. После json.loads(...) вы не используете var, вместо этого вы использовали input.
  3. Имя переменной input не должно использоваться, так как это встроенная функция .

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

0 голосов
/ 28 мая 2020

Проблема здесь (строки 6 и 7) в том, что вы ссылаетесь на строку, а не на объект JSON. Приведенный ниже код устраняет эту проблему.

import json

input = '{"data": 47.8,"code": "ABB","ID": "03"}'

var = json.loads(input)

if var["data"] < 50:
    print(var["data"])
0 голосов
/ 28 мая 2020

Не добавлены лишние вещи, просто решите вашу ошибку, которую вы получаете.

import json
input = '{"data": 47.8,"code": "ABB","ID": "03"}'

var = json.loads(input)

print(var)
for row in var:
    print(row)
    if var["data"] < 50:
        print(var["data"])

0 голосов
/ 28 мая 2020

Попробуйте следующий код, тип уже является плавающим, поэтому нет необходимости преобразовывать его снова перед выполнением математической операции

import json

input = '{"data": 47.8,"code": "ABB","ID": "03"}'
var = json.loads(input)
print(type(var['data']))
if var['data'] < 50:
    print(var['data'])
else:
    print('No Data')

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