空格作为 .ini 文件中的值

Whitespace as a value in .ini file

我希望我的 .ini 文件有一个选项来指定某个字符作为参数的分隔符,然后用 Python 处理。即:

[meta]
split_char = " "

[stuff]
field = value_1 value_2

如何将空格指定为拆分字符以使其可识别?我试过 " "[ ] 和其他一些选项,它们都不起作用。

正如我被问到的那样,这是读取 .ini 文件的 Python 脚本:

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 认为分隔符是空的,添加引号或任何其他辅助符号都无法完成任务。

更新

问题是我还希望能够要求像','这样的分隔符,它是一个带有空格的字符串。

如果您强制执行 ini 文件中的值将始终为的约定:

<delim>sep<delim>

例如" "[ ],你可以只拥有:

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

恐怕你不喜欢用空格作为分隔符。 ConfigParser calls str.strip on the value after the delimiter.

但这实质上意味着只要您将空格指定为 split_car,您将获得 '' 作为它的值。由于 '' 不是字符串中的有效分隔符,您可以在从 config["meta"]["split_char"].

获取 split_char 时简单地将 '' 替换为 ' '

基本上,您可以将 split_char = config["meta"]["split_char"] 行调整为:

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

一切顺利!

这可以通过以下技巧来完成:

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

然后分隔符可以放在引号或括号内或其他任何地方:

[meta]
split_char = " "

要拆分的字符数量也无所谓,使用 , .

之类的东西很容易