Hel*_*hne 12 python interpolation escaping
我想对configobj配置文件的值使用解析时间和运行时插值.在Python中进行简单字符串插值的最简单方法是"%(foo)s" % somedict.不幸的是,configobj使用相同的插值机制,我还没有找到逃脱它的方法.理想情况下,我的价值看起来像:
othervar = foo
someconfigobjkey = %(othervar)s %%(runtimevar)s
Run Code Online (Sandbox Code Playgroud)
然而,configobj尝试(并失败)替换第二个变量.回答这个问题的另一种方法是提供一种不同的(configobj)方法来同时进行解析时间和运行时插值.
Hue*_*cio 11
自发布此问题以来,情况可能已发生变化,但我发现您可以使用'%'字符进行转义.这在Python 3中对我有用.
在我的config.ini文件中:
[LOGGING]
format = %%(asctime)-15s %%(message)s
Run Code Online (Sandbox Code Playgroud)
在我的python脚本文件中:
import configparser
# Load configuration
config = configparser.ConfigParser()
config.read("config.ini")
log_config = config['LOGGING']
print(log_config['format']) # prints out '%(asctime)-15s %(message)s'
Run Code Online (Sandbox Code Playgroud)
希望它能在将来帮助某人(:
新版本的答案:
您可以使用 "".format() (Python 2.6 或更高版本)或 string.Template (Python 2.4 或更高版本)进行运行时插值 - 两者都可以消除冲突。
(旧版本假定使用标准 ConfigParser 模块,因此有注释。)
| 归档时间: |
|
| 查看次数: |
7253 次 |
| 最近记录: |