Par de chaves de valor JSON para conter aspas duplas usando Python
Estou tentando obter os valores-chave json usando python.
Inicialmente, tenho meu valor json em uma variável de string e, mais tarde, estou convertendo em valor de dicionário,
data='{"enc_column": "5", "Delimiter": ";"}'
pair=json.loads(data)
print (pair['Delimiter'])
Result- ; (ponto e vírgula)
Mas, no meu caso, o delimitador que espero é ";" (ponto e vírgula entre aspas duplas) Então, tentei o seguinte,
data='{"enc_column": "5", "Delimiter": '";"'}'
pair=json.loads(data)
Mas obtendo o erro abaixo,
Alguém pode sugerir obter o resultado do delimitador como ";" em vez de apenas; usando Python
Não estou esperando juntar as aspas duplas depois que o ponto-e-vírgula for retornado sozinho.
Respostas
Você precisa escapar da barra invertida no json e as aspas simples não são permitidas no json :
import json
data='{"enc_column": "5", "Delimiter": "\\";\\""}'
pair=json.loads(data)
print (pair['Delimiter'])
PS: Normalmente você não escreveria seu json manualmente, mas seria impresso por algum outro componente, como outro script python, por exemplo. Nesse caso, o escape das aspas duplas seria feito pelo serializador json:
import json
data = {'delimiter': '";"'}
print(json.dumps(data))
Resultado:
{"delimiter": "\";\""}
Se você pegar essa string e colocá-la em um script Python:
string = '{"delimiter": "\";\""}'
print(string)
Resultado:
{"delimiter": "";""}
você verá que precisa escapar do \para evitar que seja interpretado (e, portanto, consumido) pelo Python:
string = '{"delimiter": "\\";\\""}'
print(string)
Resultado (conforme necessário):
{"delimiter": "\";\""}
Você precisa usar uma barra invertida \\dupla para escapar as aspas duplas "em JSON:
Uma versão com escape de seu JSON avaliada em JS está no snippet abaixo. O valor devolvido é";"
data='{"enc_column": "5", "Delimiter": "\\";\\""}'
pair=JSON.parse(data)
console.log((pair['Delimiter']))