我有一个方法,作为其工作的一部分,使用作为函数提供的替换值调用re.sub。此功能在此更大功能中定义。
问题是这个作为参数传递给re.sub的内部函数无法访问外部函数中定义的变量。如何使外部范围可用?
下面的代码删除了工作敏感部分。重要的部分是回调函数_unsub_link_replacement和var unsub_link,我希望回调函数可以访问它,但它没有。
一个警告是我必须使用正则表达式。
@classmethod
def process_unsub_link(cls, html_content):
protocol = "http:" # TODO - this needs to be derived
host = "localhost:8080" # TODO - this needs to be derived
ns = urllib.quote("fake_namespace") # TODO - this needs to be derived
unsub_link_section = "/callback/unsub/?ns={}".format(ns)
unsub_link = "{}//{}{}".format(protocol, host, unsub_link_section)
def _unsub_link_replacement(match):
if len(match.groups()) == 2: # Success case
value = match.groups(1)
if value not in unsub_link:
do_unspecified_things()
pattern = "(\*\|\s*UNSUB:([^\s\|]*)\s*\|\*)"
content = re.sub(pattern, _unsub_link_replacement, html_content)
return content
答案 0 :(得分:-1)
我认为this answer会对你正在寻找的东西产生影响。
我认为简单的解决方案是使unsub_link
成为一个全局变量,这似乎是hackish但会让你的回调函数可以访问它。