用于解析自定义配置文件的Python模块

3
我有一个像这样的配置文件:
asaasdfg fdhshs "kgk jjjd" jdyesgs
gdgdg urur "irit jhd *" djjdj
trteyuueu ueue "jyuoro" ooyoy
等等。我可以使用自己的解析器模块(使用正则表达式)来解析它,但这假定文件具有严格的结构(例如,每行中的元素由单个空格分隔)。是否有通用的Python模块可以解析这种文件,以便无论有多少个空格分隔元素都不要紧。
我已经看过了this,但它假定了与我所拥有的不同的文件结构。特别是,我没有节或键值对。
有什么建议吗?

6
为什么要使用自定义格式?对于那些人不会编辑的配置文件,请使用JSON格式,对于那些需要由人类编辑的配置文件,请使用INI(使用ConfigParser)或YAML格式。 - Colin Dunklau
1
好的,我已经拿到了配置文件,而且不是我创建的。 - NGambit
2
使用CSV模块和namedtuple的组合是一个选择。CSV模块支持多种选项来处理带引号的字符串。 - iruvar
@Colin,或者你可以像Django一样直接使用Python。由于没有重新编译Python代码的必要,因此没有必要像Java或C那样将配置存储在不同的格式中。 - limscoder
1个回答

4

虽然不完全清楚你需要什么,但shlex模块可以很好地解析引号括起来的字符串。例如,给定您的示例输入,以下代码:

for line in sys.stdin:
    parts = shlex.split(line)
    print parts

将产生:

['asaasdfg', 'fdhshs', 'kgk jjjd', 'jdyesgs']
['gdgdg', 'urur', 'irit jhd *', 'djjdj']
['trteyuueu', 'ueue', 'jyuoro', 'ooyoy']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接