以下是由ConfigParser解析的文件:
[Ticket]
description = This is a multiline string.
1
2
4
5
7
如official Python wiki for ConfigParser examples所述,这里是辅助函数:
def ConfigSectionMap(section):
dict1 = {}
options = Config.options(section)
for option in options:
try:
dict1[option] = Config.get(section, option)
if dict1[option] == -1:
DebugPrint("skip: %s" % option)
except:
print("exception on %s!" % option)
dict1[option] = None
return dict1
结果值为:
>>> print ConfigSectionMap('Ticket')['description']
This is a multiline string.
1
2
4
5
7
预期值为:
>>> print ConfigSectionMap('Ticket')['description']
This is a multiline string.
1
2
4
5
7
我该如何解决这个问题?
答案 0 :(得分:1)
更新:我在下面给出的链接是Python 3.0,我很抱歉忘了你的标签。
2.7文档中未提及值中的空行,因此我怀疑它们根本不受支持。
另请参阅此SO问题(看起来像Python 3):How to read multiline .properties file in python
值也可以跨越多行,只要它们是缩进的 比价值的第一行更深。取决于解析器 模式,空行可以被视为多行值的一部分或 忽略。
我不知道这是指'解析器模式',但不确定你想要的是什么。
另一方面,文档还提到了empty_lines_in_values
选项,这似乎表明支持空行 。
似乎与我有些矛盾。
答案 1 :(得分:0)
修复它的一种方法是将辅助函数修改为:
def ConfigSectionMap(section):
dict1 = {}
options = Config.options(section)
for option in options:
try:
dict1[option] = Config.get(section, option).replace('\\n', '')
if dict1[option] == -1:
DebugPrint("skip: %s" % option)
except:
print("exception on %s!" % option)
dict1[option] = None
return dict1