空格作为 .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 = " "
要拆分的字符数量也无所谓,使用 ,
.
之类的东西很容易
我希望我的 .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 = " "
要拆分的字符数量也无所谓,使用 ,
.