如何在下面的python代码中合并这个附加用例
我有以下文本 我需要编写一个python代码来查找“link”,然后获取所有的值,之后我将按照上面的示例获取这些值。 然后我需要从括号中取出整数值,检查它是否大于零,然后返回一个结果dict,告诉我们应用了哪些优化。 现在,额外的用例是文本还包含一些额外的关键字如何在下面的python代码中合并这个附加用例,python,Python,我有以下文本 我需要编写一个python代码来查找“link”,然后获取所有的值,之后我将按照上面的示例获取这些值。 然后我需要从括号中取出整数值,检查它是否大于零,然后返回一个结果dict,告诉我们应用了哪些优化。 现在,额外的用例是文本还包含一些额外的关键字 理想情况下,我希望它能够应用多个正则表达式,并将已应用/未应用放入结果dict中。如何操作。您不必编辑进程调试输出,只需在检查中添加一些代码即可。试试这个: from body_parser import Extractor impor
理想情况下,我希望它能够应用多个正则表达式,并将已应用/未应用放入结果dict中。如何操作。您不必编辑进程调试输出,只需在检查中添加一些代码即可。试试这个:
from body_parser import Extractor
import re
class FEOProcessor(object):
CHECKS = [
('Standard JavaScript Inlining Optimization', ('EMBED_JAVASCRIPT',), 'check_js_inlining'),
('HTML5 Advanced Cache', ('JAVASCRIPT_HTML5_CACHE', 'CSS_HTML5_CACHE'), 'check_html5_advanced_cache'),
('Cookieless Resource Domain', ('RENAME_JAVASCRIPT', 'RENAME_CSS'), 'check_cookieless_resource_domain'),
('Minificatiopn of JS', ('MINIFY_JAVASCRIPT',), 'check_js_minifaction'),
('File Versioning', ('RENAME_JAVASCRIPT', 'RENAME_IMAGE', 'RENAME_CSS'), 'check_file_versioning'),
('Small Image Embedding', ('EMBED_IMAGE',), 'check_small_image_embedding'),
('Responsive Image Loading', ('RESPONSIVE_IMAGES',), 'check_responsive_image_loading'),
('Asynchronous JS and CSS Loading', ('ASYNC_JAVASCRIPT',), 'check_async_js_and_css_loading'),
('JS Pre-Execution', ('PRE_EXECUTE_JAVASCRIPT',), 'check_js_pre_execution'),
('EDGESTART', ('EDGESTART',), 'check_edgestart'),
('Invoke Click OnTouch', ('BlzFastClick',), 'check_click'),
('Cellular Connection Keep-Alive', ('blzEnableMobileHeartbeat',), 'check_cell'),
]
def __init__(self):
self.parser = Extractor()
self.result = dict((k, 'Not Applied') for k,_,_ in self.CHECKS)
for _, keys, name in CHECKS:
locals()[name] = lambda self, result, _keys=keys: all(result.get(k, 0)>0 for k in _keys)
def process_feo_debug_output(self, analysis_id, url):
feed = self.parser.start_parser(analysis_id, url, True)
result = self.get_feo_tags(feed)
for name, _, func in self.CHECKS:
self.result[name] = ('Not Applied','Applied')[getattr(self,func)(result)]
return self.result
def get_feo_tags(self, feed):
result = {}
tag_list = re.findall(r'(?:TextTransApplied):\s*((?:(?:[A-Z]+(?:_[A-Z\d]+)+)?\(\d+\)\s*(?:,\s*|;))*)', str(feed))
for tag in tag_list:
for element in tag.split(","):
index = element.index('(')
if element[:index].strip():
result[element[:index].strip()] = (element.split("(")[1].rstrip(");"))
return result
def check_edgestart(self, result):
return 1 if 'EDGESTART' in result.keys() else 0
def check_click(self, result):
return 1 if 'BlzFastClick' in result.keys() else 0
def check_cell(self, result):
return 1 if 'blzEnableMobileHeartbeat' in result.keys() else 0
您想将这三个if条件放入函数process\u feo\u debug\u输出中,对吗?我不明白你的确切意思。是的,但是我可以消除这些if条件吗,否则更多的正则表达式将意味着更多的if语句。