除了由@DeepSpace提供的答案,你可以限制使用正則表達式允許值:
import re
string = """
par1 = 10.81
par2 = 0.3
par3 = 0.5
"""
rx = re.compile(r'^(?P<key>\w+)\s*=\s*(?P<value>[\d.]+)', re.MULTILINE)
for var in rx.finditer(string):
exec("{} = {}".format(var.group('key'), var.group('value')))
print(par1)
# 10.81
這裏,僅數值被允許的值(0-9.
)和a-z_
爲變量名。根據需要調整(即允許字符串)。
另一種方法是使用一個容器的參數,即一個字典:
params = {match.group('key'): match.group('value')
for match in rx.finditer(string)}
print(params)
# {'par1': '10.81', 'par2': '0.3', 'par3': '0.5'}
你會然後通過params['par1']
打電話給你的變量。
來源
2017-03-07 09:30:16
Jan
謝謝。那麼什麼是在我的腳本中加載一些配置參數的最好方法?這些是一個類的參數.. – gabboshow
@gabboshow我已經添加了正確和安全的方式來使用'json'來完成它。 – DeepSpace
我編輯了我的問題......是否有可能在類的構造函數中完成它? – gabboshow