我试图在我放在一起的脚本中使参数更易于管理,我想我会将一堆相关项目包装到字典中,并将字典从函数中传递出去。拉出我需要的物体。
其中一项是正则表达式,我正在努力弄清楚如何正确地构造事物以便使其工作。
在我的初始代码中(没有字典)。我正在将正则表达式“硬”编码到解析器中:
def TopnTail(self,line):
topRegEx = re.compile(r'(<!--make_database header end-->)')
tailRegEx = re.compile(r'(<!--make_database footer start-->)')
searchdumpTopOfPage = topRegEx.search(line)
searchdumpBottomOfPage = tailRegEx.search(line)
if searchdumpTopOfPage:
self.__useLine=1
if searchdumpBottomOfPage:
self.__useLine=0
if self.__useLine == 1:
self.trimmedLines = self.trimmedLines + line + "\n"
return (self.trimmedLines)
在“字典”版本中,我想在 setter 中设置变量:
def siteDetails():
baseDict = {'topRegex':'''re.compile(r'(<!--make_database header end-->)')''', 'tailRegex':'''re.compile(r'(<!--make_database footer start-->)')'''}
return baseDict
并获得编译的正则表达式:
def TopnTail(self,line):
topRegEx = baseDict['topRegex']
tailRegEx = baseDict['tailRegex']
searchdumpTopOfPage = topRegEx.search(line)
searchdumpBottomOfPage = tailRegEx.search(line)
if searchdumpTopOfPage:
self.__useLine=1
if searchdumpBottomOfPage:
self.__useLine=0
if self.__useLine == 1:
self.trimmedLines = self.trimmedLines + line + "\n"
return (self.trimmedLines)
但这会引发错误:
line 35, in TopnTail
searchdumpTopOfPage = topRegEx.search(line)
AttributeError: 'str' object has no attribute 'search'
我猜这意味着它实际上并没有生成正则表达式对象,但仍在传递字符串。
我很感激我在这里可能违反了大约 3 条基本规则......但是任何关于如何使它工作的建议都会很棒......(另外,第一次玩类和字典......所以如果我请放轻松真的搞砸了!)