微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ConfigParser选项的值为%

如何解决ConfigParser选项的值为%

我正在尝试使用ConfigParser解析.conf文件,并且某些值的值中包含'%'。

以下配置示例:

[global]
    workgroup = WORKGROUP
    server string = %h server (Samba,Ubuntu)

当我使用RawConfigParser对此进行解析时,它将server string设置为

%h server (Samba,Ubuntu)\n\n\n\ndns proxy = no\n\n\n\n\n\n\n\n...REST_OF_CONfig_SECTION

一堆\n是配置选项之间的空白行。当我使用普通的ConfigParser时,我得到一个InterpolationSyntaxError并出现错误

'%'必须后跟'%'或'(',找到:'%h服务器(Samba,Ubuntu)\ n \ n \ n \ ndns代理=否\ n \ n \ n \ n \ n \ n \ n \ n

在将字符串传递给ConfigParser之前进行编辑(将%替换为%%)会对其进行解析,但是与RawConfigParser出现相同的问题,即它将其余选项解析为一行。

我应该如何正确解析其中包含%的值?

解决方法

请参阅文档。您必须使用%%来逃脱%

https://docs.python.org/3/library/configparser.html

[Escape]
gain: 80%%  # use a %% to escape the % sign (% is the only character that needs to be escaped)

在您的情况下:

[global]
workgroup = WORKGROUP
server string = %%h server (Samba,Ubuntu)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。