我正在使用
source= open(curr_file,"r")
lines= source.readlines()
這會將我的文本檔案中的每一行都轉換為一個串列,但我的串列中的某些專案是用雙引號創建的,而有些則是用單引號創建的,如下所示。
['[INFO] Name: Xxxx, section: yyyy, time: 21.2, status: 0\n', "proof:proof1,table: db.table_name,columns:['column_1'],count:10,status:SUCCESS\n",'run time: 30 seconds\n']
串列中的第一項是用單引號創建的,而第二項是用雙引號創建的。
嘗試將上述內容轉換為字典時
new_line= dict(x.split(":"),1) for x in line.split(","))
它給了我一個值錯誤
Value error: dictionary update sequence element has length 1; 2 is required
上述錯誤是因為它將雙引號下的整個字串視為單個值,并且無法將其轉換為字典。
有沒有辦法將其轉換為單引號而不是雙引號。我嘗試使用替換,剝離。但沒有任何幫助。
預期輸出:{ Name:Xxxx, section:yyyy, time:21.2, proof:proof1 table:db.table_name status: success }
uj5u.com熱心網友回復:
引號與錯誤無關。每行的外部引號不是 str 物件的一部分。他們只列印給你知道它是一個str。單引號因為內容里面有單引號所以切換成雙引號,那么就不能用單引號來分隔str了。但同樣,這只是列印內容的變化,而不是存盤在記憶體中的內容。
嘗試分步執行并列印除錯程式所需的中間物件。
for x in line: #prints nicer than print(line)
print(x)
arg = [x.split(":",1) for x in line.split(",")]
for x in arg:
print(x)
new_line = dict(arg)
你應該得到帶有兩個元素的列印元組
uj5u.com熱心網友回復:
要將一行(str)轉換為dict,您可以使用字典理解:
new_line = dict(x.split(":",1) for x in line.split()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/342528.html
上一篇:在SNOWFALKE中從JSON中提取和轉換日期時間欄位
下一篇:在r中決議多級json檔案
