40

愚蠢的问题(肯定)简单的答案......

我正在使用 configparser 从文件中读取一些字符串。当字符串有 '%' 符号(例如 $%&)时,它会抱怨:

ConfigParser.InterpolationSyntaxError: '%' 后面必须跟 '%' 或 '(', found: "%&'"

有人熟悉这个吗?

谢谢!

4

3 回答 3

69

如果您不想替换环境变量,请使用 RawConfigParser,而不是 ConfigParser。

于 2013-01-15T15:02:07.600 回答
39

两个 %

V = ('%%', 'MHz', 'GHz')

结果:

('%', 'MHz', 'GHz')
于 2015-03-05T09:57:00.643 回答
25

默认情况下,ConfigParser启用了值的插值。这意味着您可以在属性文件中使用变量。

从 Python 3.2 开始,您可以在构造函数中禁用插值:

configParser = configparser.ConfigParser(interpolation=None)

如果您不想禁用插值,则必须通过在属性文件中放置两个连续的%符号来转义,如文档示例中所示。%%

请注意,这RawConfigParser是一个遗留变体。从python文档

考虑使用 ConfigParser 来检查要在内部存储的值的类型。如果不想插值,可以使用 ConfigParser(interpolation=None)。

于 2020-06-26T09:50:30.990 回答