2016-06-09 2 views
0

Я пытаюсь использовать json.loads для анализа данных в таблице базы данных Redshift. Я отключил функцию тестирования в скрипте Python, и мне трудно понять, что происходит.Какой формат вводит данные для json.loads Python?

код я использую:

import json 
j="'['Bars', 'American (Traditional)', 'Nightlife', 'Restaurants']'" 

def trythis(item, reverse): 
    if not j: 
     return '1' 
    try: 
     arr = json.loads(j) 
    except ValueError: 
     return '2' 
    if not ascending: 
     arr = sorted(arr, reverse=True) 
    else: 
     arr = sorted(arr) 
    return json.dumps(arr) 

print trythis(j, True) 

И это возвращение 2.

Я попытался изменить входную переменную на j="['Bars', 'American (Traditional)', 'Nightlife', 'Restaurants']", но это не сработало. В каком формате должно быть значение моего ввода?

+0

Ах спасибо. Вы бы рекомендовали использовать что-то вроде 'str.replace' для замены внутренних одинарных кавычек на двойные кавычки? – simplycoding

+0

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

+1

Вам не следует пытаться создавать JSON вручную, есть ряд деталей, которые вряд ли получат право. Используйте библиотечную функцию, которая создает JSON из структуры данных, например 'json.dumps()'. – Barmar

ответ

1

Неправильная введенная строка j JSON. JSON не позволяет использовать одинарные кавычки (') для обозначения строковых значений.

Попробуйте переключить цитаты: '["Bars", "American (Traditional)", "Nightlife", "Restaurants"]'

Спецификация JSON является отличным ресурсом для определения, если ваш вход правилен JSON. Вы можете найти его здесь: http://www.json.org/

+0

Спасибо. Фактически данные не являются JSON-форматом, но перед использованием функции я смог просто заменить одиночные кавычки двойными кавычками на стороне SQL. Не лучший способ, но все, что мне нужно, это то, что работает. – simplycoding

Смежные вопросы