我有一個具有不同輸入的文本輸入文件,如下所示,分別以字典和列表格式存儲。部分文本文件如下:#Drive-Size-Mapping{'root' : 50 , '\usr' : 20, 'swap' : 1}#OS-Version[7.1, 7.2, 7.3, 7.4, 7.5, 7.6]如您所見,第一行是字典格式,第二行是列表格式?,F在,當我在變量中讀取和存儲行時,Python 無法識別格式。這是我正在嘗試的代碼: f=open("C:\\Users\xyz\\Desktop\\Inputs.txt")lines=f.readlines()i = lines.index("#Drive-Size-Mapping\n")di=dict()di = lines[i+1]print(di[0])j = lines.index("#OS-Version\n")list = lines[j+1]print(list[0])上面的代碼是:{ {即它只打印數組的第一個數組索引中存在的項目。我希望 python 將這些變量分別解釋為字典和列表。所以,如果我這樣做print di["root"]我的代碼應該將其識別為字典并打印為50. 并且 print(list[0])應該將其識別為列表和輸出7.1.請讓我知道應該如何操作文件行以使 python 以它們實際存在的格式解釋它們?
3 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
只需添加上述答案:
利用:
ast.literal_eval()
但是從字典的鍵中刪除/替換“\”,因為它可以在 literal_eval() 函數中創建 unicode 錯誤
代碼中的另一個錯誤,在轉換為字典后,你不能做 d[0] 因為字典沒有索引

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
您從文件中獲得的行是string. 如果要將它們轉換為dict或list對象,可以使用literal_eval:
from ast import literal_eval
...
d = literal_eval(lines[i+1])
...
l = literal_eval(lines[i+1])
如果您可以更改輸入文件的格式,我會考慮將其修改為json文件,以便使用json 模塊方便地存儲和加載您的對象。

catspeake
TA貢獻1111條經驗 獲得超0個贊
該函數readlines
執行它所說的:它讀取 lines。你我都可以認識到這兩行是 Python 字典和 Python 列表,但 Python 不能也不應該。
在我看來,您正在從一個包含 Python 源代碼的文件中讀取配置設置。一種更標準的方法是使用.ini
文件??纯茨Kconfigparser
。
添加回答
舉報
0/150
提交
取消