如何在Python configparser中为值添加分号?

2 投票
3 回答
2846 浏览
提问于 2025-04-16 07:43

我需要在Python的configparser文件中,在等号右边指定一个密码,但分号是注释的标记。

用反斜杠\来转义并不管用。

我该如何在configparser中把字符串"foo;"作为一个值传进去呢?

3 个回答

1

我的这个没问题。
我注意到“以'#'或';'开头的行会被忽略,可以用来写注释。”

4

ConfigParser 似乎在处理分号前面的空格时有个问题:

>>> import StringIO
>>> import ConfigParser
>> p = ConfigParser.ConfigParser()
>>> s1 = StringIO.StringIO('[foo]\nbla=bar;baz\n')
>>> p.readfp(s1)
>>> p.items('foo')
[('bla', 'bar;baz')]

>>> s2 = StringIO.StringIO('[foo]\nbla=bar ;-) baz\n')
>>> p.readfp(s2)
>>> p.items('foo')
[('bla', 'bar')]

>>> s3 = StringIO.StringIO('[foo]\nbla=bar \;-) baz\n')
>>> p.readfp(s3)
>>> p.items('foo')
[('bla', 'bar \\;-) baz')]
>>>

请注意,最后的版本还是不对,因为里面仍然有转义的反斜杠...

2

一个简短的互动环节显示,分号可以顺利读取。

>>> import StringIO
>>> import ConfigParser
>>> f = StringIO.StringIO("[sec1]\npwd=foo;\n")
>>> p = ConfigParser.ConfigParser()
>>> p.readfp(f)
>>> p.items('sec1')
[('pwd', 'foo;')]
>>> 

撰写回答