[英]How to not escape backslash when writing to JSON
我正在嘗試讀取 JSON 文件並向其添加新的key,value
對。 然后將 JSON 文件寫回。 例子
# Read the JSON and add a new K,V
input_file_path = os.path.join(os.path.dirname(__file__), 'test.json')
input_file = open(input_file_path, 'r')
data = json.load(input_file)
data['key'] = os.environ.get('KEY', '') #<-- Adding a new K,V
input_file.close()
# Write the JSON to tmp.
output_file = open('/tmp/' + 'test.json', 'w')
json.dump(data, output_file, indent=4)
output_file.close()
我的輸入 JSON 看起來像這樣
{
"type": "account"
}
我的名為KEY
變量看起來像這樣-----BEGINKEY-----\\nVgIBMIIE
寫入 tmp 的最終 JSON 文件如下所示
{
"private_key": "-----BEGINKEY-----\\nVgIBMIIE",
"type": "account"
}
我無法弄清楚為什么要轉義反斜杠? 我怎樣才能避免這種情況?
該程序將您的輸入字符串視為原始字符串,因此添加了額外的\\
。 原始的 '\\' 實際上並沒有轉義任何內容,因此要在 Python 中將其表示為字符串,您需要對其進行轉義。 然而,正如您所看到的,這可能是有問題的。 您可以使用以下命令將字符串強制恢復為 unicode 格式:
import codecs
raw_val = os.environ.get('KEY', '')
val = codecs.decode(raw_val, 'unicode_escape')
data['key'] = val
如果要在 JSON 中表示-----BEGINKEY-----\\nVgIBMIIE
,則必須使用雙引號字符串。
在雙引號字符串中,反斜杠具有特殊含義。 不能簡單地通過鍵入"\\"
來編寫反斜杠字符。 這會產生錯誤。
因此,必須轉義反斜杠。 因此-----BEGINKEY-----\\nVgIBMIIE
在 JSON 字符串中變為"-----BEGINKEY-----\\\\nVgIBMIIE"
。
如果你想去掉反斜杠,你需要代表
-----BEGINKEY-----
VgIBMIIE
而不是
-----BEGINKEY-----\nVgIBMIIE
這兩件事不是一回事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.