(Целые) данные не являются JSON-строкой.А именно потому, что '
символы не допускаются в структурах JSON.Лучшим вариантом было бы вернуться туда, где это было сгенерировано, и исправить искаженные данные, прежде чем идти дальше.
После того, как вы исправили неверные данные, вы можете сделать:
import json
result = json.loads('''{"col1":"value1", "col2":[{"col3":"val3"},{"col3":"val4"}]}''')
ЕслиВы не можете изменить способ передачи данных.Одним из решений было бы заменить строки плохими символами (но это могло бы вызвать все проблемы на этом пути) :
import json
result = json.loads('''{"col1":"value1", "col2":"[{'col3':'val3'},{'col3':'val4'}]"}''')
result['col2'] = json.loads(result['col2'].replace("'", '"'))
В любом случае, я бы вернулся и повторноработать так, как вы получаете данные для наиболее надежных результатов.Но это не JSON-данные, как сейчас.По крайней мере, не в том смысле, в каком вы думаете.