【问题标题】:Python 2.x - ConfigParser stripping blank lines in multiline valuePython 2.x - ConfigParser 在多行值中剥离空行
【发布时间】:2011-10-19 22:30:24
【问题描述】:

以下是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 

我该如何解决这个问题?

【问题讨论】:

    标签: python configparser blank-line


    【解决方案1】:

    更新:我在下面给你的链接是 Python 3.0,很抱歉我忘记了你的标签。

    2.7 文档没有在值中提到空行,所以我怀疑它们根本不受支持。

    另请参阅这个 SO 问题(看起来像 Python 3):How to read multiline .properties file in python


    来自documentation

    值也可以跨越多行,只要它们是缩进的 比值的第一行更深。根据解析器的 模式下,空行可以被视为多行值的一部分,或者 忽略。

    我不知道这是指什么“解析器模式”,但不确定您想要的是否可行。

    另一方面,文档还提到了empty_lines_in_values 选项,这似乎表明支持空行。 对我来说似乎有些矛盾。

    【讨论】:

    • 谢谢你,但正如你已经意识到的那样,我使用的是 Python 2.7。不幸的是,Python 2.7 的 ConfigParser 中没有 empty_lines_in_values
    • @ghee22:如果您不限于标准库,则可以使用 ConfigObj,如我提供的 SO 链接中所述。您可以使用三引号将值括起来。这是文档:voidspace.org.uk/python/configobj.html#the-config-file-format
    【解决方案2】:

    修复它的一种方法是将辅助函数修改为:

    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
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2011-03-23
      • 2022-06-10
      • 1970-01-01
      相关资源
      最近更新 更多