我是一個Python新手,我搜索如何解析.txt文件。 我的.txt文件是計算信息等名稱列表:解析文本文件中的鍵值對
myfile.txt的
var0 = 16
VAR1 = 1.12434E10
VAR2 = -1.923E-3
VAR3 = 920
如何讀取值,並把它們放在myvar0, myvar1, myvar2, myvar3
在Python?
我是一個Python新手,我搜索如何解析.txt文件。 我的.txt文件是計算信息等名稱列表:解析文本文件中的鍵值對
myfile.txt的
var0 = 16
VAR1 = 1.12434E10
VAR2 = -1.923E-3
VAR3 = 920
如何讀取值,並把它們放在myvar0, myvar1, myvar2, myvar3
在Python?
我建議在字典中存儲的,而不是在單獨的局部變量的值:
myvars = {}
with open("namelist.txt") as myfile:
for line in myfile:
name, var = line.partition("=")[::2]
myvars[name.strip()] = float(var)
現在訪問他們爲myvars["var1"]
。如果名稱都是有效的python變量名稱,則可以將其放在下面:
names = type("Names", [object], myvars)
並訪問值,例如, names.var1
。
嘗試Python標準模塊configparser
注:configparser拋出一個'MissingSectionHeaderError'如果文件不包含章節標題和OP的榜樣呢沒有標題。 @Lauritz的自定義解決方案可能比[使用configparser沒有標頭可能的解決方法]更簡單(http://stackoverflow.com/questions/22501121/configparser-missingsectionheadererror-when-parsing-rsyncd-config-file-with -glob)。 – 7yl4r 2017-03-13 18:48:49
正如@kev所示,configparser模塊是最好的選擇。
然而,在某些情況下(有點難看,我承認),但非常簡單而有效的方式做這個是重命名myfile.txt
到myfile.py
,做一個from myfile import *
(在修復錯字var 0
- >var0
)
但是,這是非常不安全,所以如果該文件來自外部源或可以由惡意攻擊者寫入,請使用某些驗證數據而不是盲目執行它。
如果有上一行用逗號分隔值,這裏的代碼來解析出:
res = {}
pairs = args.split(", ")
for p in pairs:
var, val = p.split("=")
res[var] = val
在我的情況下,他在名稱上使用strip()是多餘的,但var上的換行符導致了問題。所以對我來說更好的是myvars [name] = float(var.strip()) – snow6oy 2016-01-07 18:24:44
如果文件cas註釋'#this is a comment line' – 2016-11-09 08:21:16