亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 不會像字典格式那樣從文本文件中讀取提取的行

Python 不會像字典格式那樣從文本文件中讀取提取的行

楊__羊羊 2022-01-11 19:35:37
我有一個具有不同輸入的文本輸入文件,如下所示,分別以字典和列表格式存儲。部分文本文件如下:#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] 因為字典沒有索引


查看完整回答
反對 回復 2022-01-11
?
慕萊塢森

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 模塊方便地存儲和加載您的對象。


查看完整回答
反對 回復 2022-01-11
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

該函數readlines執行它所說的:它讀取 lines。你我都可以認識到這兩行是 Python 字典和 Python 列表,但 Python 不能也不應該。

在我看來,您正在從一個包含 Python 源代碼的文件中讀取配置設置。一種更標準的方法是使用.ini文件??纯茨Kconfigparser


查看完整回答
反對 回復 2022-01-11
  • 3 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號