我需要在python configparser文件中的等号右侧指定密码,但分号是注释字符。
使用\逃脱不起作用。
如何传递字符串“foo;”作为configparser中的值?
答案 0 :(得分:2)
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')]
>>>
请注意,最后一个版本仍然不正确,因为转义反斜杠仍在那里...
答案 1 :(得分:1)
我的工作正常。 并注意到“行开始与'#'或';'被忽略,可用于提供评论。 “
答案 2 :(得分:1)
一个简短的交互式会话显示分号被读取没有问题。
>>> import StringIO
>>> import ConfigParser
>>> f = StringIO.StringIO("[sec1]\npwd=foo;\n")
>>> p = ConfigParser.ConfigParser()
>>> p.readfp(f)
>>> p.items('sec1')
[('pwd', 'foo;')]
>>>