代码之家  ›  专栏  ›  技术社区  ›  Kaiyakha

在中,空格作为一个值。ini文件

  •  0
  • Kaiyakha  · 技术社区  · 4 年前

    我想要我的 .ini 文件中,可以选择指定某个字符作为参数的拆分器,然后使用Python进行处理。也就是说:

    [meta]
    split_char = " "
    
    [stuff]
    field = value_1 value_2
    

    如何将空白指定为拆分字符,使其可识别?我试过了 " " [ ] 还有其他一些手术,它们都不起作用。

    正如我被问到的,下面是阅读 伊尼先生 文件:

    from configparser import ConfigParser
    
    config = ConfigParser()
    config.read('config.ini')
    
    # I need a nested dictionary, but this is not the point
    split_char = config["meta"]["split_char"]
    config = {section: dict(config.items(section)) for section in config.sections() if section != "meta"}
    for section in config:
        for parameter in config[section]:
            config[section][parameter] = config[section][parameter].split(split_char)
    

    如果我按原样放置空格,Python会认为拆分器为空,添加引号或任何其他辅助符号并不能完成任务。

    使现代化

    问题是,我还希望能够要求像“,”这样的拆分器,这是一个带空格的字符串。

    0 回复  |  直到 4 年前
        1
  •  1
  •   j-i-l    4 年前

    恐怕你运气不好,用空格作为分隔符。配置分析器 calls str.strip on the value after the delimiter .

    但这本质上意味着,每当你指定一个空白作为 split_car 你会得到 '' 作为它的价值。自从 '' 不是可以简单替换的字符串中的有效分隔符 '' 具有 ' ' split_char 从…起 config["meta"]["split_char"] .

    基本上你可以调整线路 split_char = config["meta"]["split_char"] 致:

    split_char = config["meta"]["split_char"] or ' '
    

    你可以走了!

        2
  •  1
  •   quamrana Ryuzaki L    4 年前

    如果强制规定ini文件中的值始终为:

    <delim>sep<delim>
    

    " " [ ] ,你只需要:

    split_char = config["meta"]["split_char"][1]
    
        3
  •  0
  •   Kaiyakha    4 年前

    这可以通过以下技巧实现:

    split_char = config["meta"]["split_char"][1:-1]
    

    然后可以将拆分器放在引号或括号内或其他任何地方:

    [meta]
    split_char = " "
    

    要拆分的字符数也不重要,可以很容易地进行以下操作: , .