2016-03-03 26 views
1

我需要一个配置文件来生成我的脚本。很好地解析python中的多行配置文件

[PATHS] 
elements = elementA,elementB,elementC,elementD,elementE,elementF,elementG,elementH,elementJ,elementK 

正如您在点后注意到线条太长。我无法跟踪写入其中的内容,并且看起来不太好。

在我的剧本我下面的阅读elements

elements = config["PATHS"]["elements"].split(",") 

是否有来处理这一个更好的办法吗?我喜欢的东西,包括换行符和制表符,例如:

[PATHS] 
elements = 
    - elementA 
    - elementB 
    - elementC 
    - elementD 
    - elementE 
    - elementF 
    - elementG 
    - elementH 
    - elementJ 
    - elementK 

从有经验的任何建议也欢迎。

我试图分裂与.split("\n\t\t- "),但没有做的工作


print("1",config["PATHS"]["elements"]) 

1 
- elementA 
- elementB 
- elementC 


print("2",config["PATHS"]["elements"].strip()) 
2 - elementA 
- elementB 
- elementC 


print("3",config["PATHS"]["elements"].strip().split('\n')) 
3 ['- elementA', '- elementB', '- elementC'] 
+0

什么是变量的类型:'config'? –

+1

'config type:';如果你要求'元素',它应该是一个字符串列表 –

+0

'-'对你很重要吗?这些元素是否可以分别放在他们自己的路线上? –

回答

2

这可能会做你想要什么:

elements = [ 
    element.strip(' -') 
    for element in config["PATHS"]["elements"].strip().split('\n')] 
+0

似乎能够完成这项工作!出于好奇,首先应用strip()和split()中的哪一个?想知道内部发生了什么...... –

+0

'strip()'去除默认的空格,'split('\ n')'创建一个列表,当它看到一个'\ n'时,分隔元素,'strip(' - ') ''从这些元素中删除'-' –

+0

我一直偏爱's.splitlines()'和's.split('\ n')'。 'splitlines'是操作系统行结束的意识,再加上我发现无参数函数调用看起来更清洁。 – PaulMcG