python文件
import ConfigParser,re
config=ConfigParser.ConfigParser()
with open("temp.cfg",'r') as config_file:
config.readfp(config_file)
x=[]
x.append(re.compile(r'abc'))
x.append((config.get("ssp",'a')).strip('"'))
print x[0]
print x[1]
配置文件[temp.cfg]
[ssp]
a:re.compile(r'abc')
输出
>>>
<_sre.SRE_Pattern object at 0x02110F80>
re.compile(r'abc')
>>>
什么&#34;打印x [1]&#34;应该给出的是正则表达式对象,但它似乎是返回字符串。
看起来我没有以正确的方式做到这一点&amp;我无法弄清楚
答案 0 :(得分:2)
x[1]
的输出是由于以下原因:
x.append((config.get("ssp",'a')).strip('"'))
由于config
是cfg文件解析器对象,因此您正在访问a
部分的ssp
选项:
[ssp]
a:re.compile(r'')
显然,字符串: re.compile(r'')
。
eval
:x.append(eval((config.get("ssp",'a')).strip('"')))
答案 1 :(得分:0)
您需要将配置文件更改为:
[ssp]
a:abc
然后你可以简单地做(没有丑陋的eval()
)
x.append(re.compile(config.get("ssp", "a")).strip())
您从配置文件中读取了正则表达式字符串第一个,然后使用re.compile()
而不是eval()
将其转换为代码中的正则表达式对象。这对于维护也更好,因为您在配置文件中保存了大量文本(a:abc
而不是每行a:re.compile(r'abc')
。)