使用嵌套标签和键值对操作文件

时间:2017-12-30 03:05:08

标签: python file parsing text

我需要使用使用等号的键值对的嵌套HTML样式标记的配置文件。

我喜欢Python方法,允许我阅读这些文件,添加,删除或修改部分,以及编写更新的文件。

文件如下:

<tag1>
key1=value1
key2=value2

<tag2>
key3=value3
</tag2>

<tag2>
key3=value four

</tag2>

</tag1>

所以它不是一个HTML或XML文件,也不是Windows INI文件。等号周围没有空格,文件中有一些似乎被忽略的随机空行,键值对中的值不使用引号,可能有嵌入空格。

我找不到这个确切文件结构的定义或名称,但我发现很难集中搜索,所以我可能错过了一些明显的东西。

这是公认的标准文件结构吗?如果是这样,它叫什么?

我很欣赏任何关于哪些库可以强制使用这种结构的指示,如果它们在docco中不易获得,可能会有一些例子。

感谢。

1 个答案:

答案 0 :(得分:0)

为了保存配置文件,您可以在python中使用configparser模块。这样可以非常轻松地在您的应用中阅读配置信息。

对于这样的配置文件: -

[installation]
library=%(prefix)s/lib
include=%(prefix)s/include
bin=%(prefix)s/bin
prefix=/usr/local

[debug]
log_errors=true
show_warnings=False

[server]
port: 8080
nworkers: 32
pid-file=/tmp/spam.pid
root=/www/root
  

您可以阅读此配置文件,如下所示:

from configparser import ConfigParser
cfg = ConfigParser()

cfg.read('config.ini')
['config.ini']

cfg.sections()
['installation', 'debug', 'server']

cfg.get('installation','library')

'/usr/local/lib'

cfg.getboolean('debug','log_errors')
True

cfg.getint('server','port')
8080

cfg.getint('server','nworkers')
32

print(cfg.get('server','signature'))

如果您只想使用那种html配置,请结帐xml.etree模块。它提供广泛的功能。