Python ConfigParser从空值中删除引号
我有一个INI windows文件,格式如下:Python ConfigParser从空值中删除引号,python,python-2.7,ini,configparser,Python,Python 2.7,Ini,Configparser,我有一个INI windows文件,格式如下: [STRINGS] property 1 = "hello" property 2 = "" PROPERTY 3 = "" [STRINGS] property 1 = "hello" property 2 = "" PROPERTY 3 = "" 但是如果我使用ConfigParser获取值 init_values= ConfigParser.RawConfigParser(allow_no_value=True) init_values.
[STRINGS]
property 1 = "hello"
property 2 = ""
PROPERTY 3 = ""
[STRINGS]
property 1 = "hello"
property 2 = ""
PROPERTY 3 = ""
但是如果我使用ConfigParser获取值
init_values= ConfigParser.RawConfigParser(allow_no_value=True)
init_values.optionxform = str
init_values.read(init_file)
并修改其中一个(即属性1)
我得到以下结果:
[STRINGS]
property 1 = "world"
property 2 =
PROPERTY 3 =
将删除空值中的所有引号
如何强制在空值中使用引号?让我们以具有以下格式的INI windows文件为例:
[STRINGS]
property 1 = "hello"
property 2 = ""
PROPERTY 3 = ""
[STRINGS]
property 1 = "hello"
property 2 = ""
PROPERTY 3 = ""
你可以按照下面的方法做。例如:
import ConfigParser
filename='config'
parser=ConfigParser.SafeConfigParser()
parser.read([filename])
print(parser.sections())
# ['section']
for section in parser.sections():
print(parser.options(section))
# ['id', 'rb', 'person']
for option in parser.options(section):
try:
value=parser.getint(section,option)
except ValueError:
value=parser.get(section,option)
print(option,value,type(value))
print(parser.items('section'))
# [('property1', 'world'), ('property2', ''), ('property3', '')]
如果您看一下您在这里所做的事情,您将显式地向值添加引号。如果要删除world
中的引号,则只需获得以下输出:
[STRINGS]
property 1 = world
property 2 =
property 3 =
这是因为INI文件实际上不使用引号来表示字符串值(因为每个值都是字符串)
但可能存在的问题是,解析器明确地将“
识别为空字符串值,并将其替换为空字符串,而其他值周围的引号保持不变。这是2.7解析器的内置行为,如果不自己实现它,就无法真正更改
请注意,在Python 3中,此行为已更改,因此
“
被识别为字符串”
,但是如果我使用此方法,我在“=”符号后仍然没有任何内容感谢大家的称赞,我只需遍历所有值并将”
替换为“
”