當我嘗試將檔案中的 JSON 陣列轉儲為 Python 中的串列時,它給了我一個字串。相反,我想要一個串列來修改它。
編碼:
import json
hola = []
f = open("prueba.json", "r")
file_data = json.loads(f.read())
print(file_data)
JSON 檔案(prueba.json)的內容:
"[\"sbs\", \"sb\", \"bs\", \"v\", \"\"]"
輸出:
["sbs", "sb", "bs", "v", ""]
但是,當我將相同的內容放入一個變數中時,它作業得非常好并回傳一個串列。
編碼:
import json
hola = []
f = "[\"sbs\", \"sb\", \"bs\", \"v\", \"\"]"
file_data = json.loads(f)
print(file_data)
輸出:
['sbs', 'sb', 'bs', 'v', '']
如何讓第一個案例回傳一個串列,而不是一個字串?
uj5u.com熱心網友回復:
但是,當我將相同的內容放入一個變數中時,它作業得非常好并回傳一個串列。
因為,這與檔案的內容不同。我用你描述的內容創建了一個檔案:
import json
with open('prueba.json') as f:
data = f.read()
print(data)
f = "[\"sbs\", \"sb\", \"bs\", \"v\", \"\"]"
print(f == data, f) # (False) no this isn't the same content
f2 = r'"[\"sbs\", \"sb\", \"bs\", \"v\", \"\"]"'
print(f2 == data, f2) # (True) f2 is the same file content. Need the quotes
# and literal backslashes, hence use of raw string
# Your data is a JSON dump of string created by a JSON dump (double encoded)
file_data = json.loads(data) # decode once
print(type(file_data),file_data) # So you get a string
fixed = json.loads(file_data) # decode again
print(type(fixed),fixed) # correct now (list)
輸出:
"[\"sbs\", \"sb\", \"bs\", \"v\", \"\"]"
False ["sbs", "sb", "bs", "v", ""]
True "[\"sbs\", \"sb\", \"bs\", \"v\", \"\"]"
<class 'str'> ["sbs", "sb", "bs", "v", ""]
<class 'list'> ['sbs', 'sb', 'bs', 'v', '']
或者更直接:
import json
with open('prueba.json') as f:
data = json.loads(json.load(f))
print(type(data),data)
# <class 'list'> ['sbs', 'sb', 'bs', 'v', '']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/336743.html
上一篇:如何在串列編號中存盤變數?
