当前位置: 首页 > news >正文

室内装饰网站模板视频号分销解决方案

室内装饰网站模板,视频号分销解决方案,外汇直播室都是网站做,品牌网上做推广1、问题背景 我们在使用 LXML 库解析 MathML 表达式时#xff0c;可能会遇到这样一个问题#xff1a;在递归解析过程中#xff0c;我们可能会重复进入同一个节点#xff0c;导致解析结果不正确。例如#xff0c;我们希望将以下 MathML 表达式解析为 Python 表达式#x… 1、问题背景 我们在使用 LXML 库解析 MathML 表达式时可能会遇到这样一个问题在递归解析过程中我们可能会重复进入同一个节点导致解析结果不正确。例如我们希望将以下 MathML 表达式解析为 Python 表达式 ?xml version1.0? math xmlnshttp://www.w3.org/1998/Math/MathML xmlns:mmlhttp://www.w3.org/1998/Math/MathML xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.w3.org/1998/Math/MathML http://www.w3.org/Math/XMLSchema/mathml2/mathml2.xsdmrowmfracmn3/mn/mnmn5/mn/mn/mfrac/mrow /math如果我们使用以下代码来解析该表达式 def parseMML(mmlinput):from lxml import etreefrom StringIO import *from lxml import objectifyexppy[]events (start, end)context etree.iterparse(StringIO(mmlinput),eventsevents)for action, elem in context:if (actionstart) and (elem.tagmrow):exppy(if (actionend) and (elem.tagmrow):exppy)if (actionstart) and (elem.tagmfrac):mmlauxetree.tostring(elem[0])exppyparseMML(mmlaux)exppy/mmlauxetree.tostring(elem[1])exppyparseMML(mmlaux)if actionstart and elem.tagmn: #this is a numberexppyelem.textreturn (exppy)那么我们得到的解析结果将是 [(, (, 3, ), /, (, 5, ), (, 3, ), (, 5, ), )]而不是我们期望的 [(, (, 3, ), /, (, 5, ), )]这是因为在解析 mfrac 节点时我们递归调用了 parseMML 函数两次分别解析了分子和分母。而在解析分子时我们又递归调用了 parseMML 函数导致重复进入了 mrow 节点。 2、解决方案 为了解决这个问题我们可以使用一个栈来保存已经解析过的节点。当我们开始解析一个新的节点时我们可以将该节点压入栈中。当我们完成解析该节点时我们可以将该节点从栈中弹出。这样我们就能够避免重复进入同一个节点。 以下代码演示了如何使用栈来避免重复进入同一个节点 def parseMML(mmlinput):from lxml import etreefrom StringIO import *from lxml import objectifyexppy[]events (start, end)context etree.iterparse(StringIO(mmlinput),eventsevents)nodestack[]for action, elem in context:if actionstart and elem.tag in nodestack:continueif (actionstart) and (elem.tagmrow):nodestack.append(elem.tag)exppy(if (actionend) and (elem.tagmrow):nodestack.pop()exppy)if (actionstart) and (elem.tagmfrac):nodestack.append(elem.tag)mmlauxetree.tostring(elem[0])exppyparseMML(mmlaux)exppy/mmlauxetree.tostring(elem[1])exppyparseMML(mmlaux)if actionstart and elem.tagmn: #this is a numberexppyelem.textreturn (exppy)使用该代码我们可以得到正确的解析结果 [(, (, 3, ), /, (, 5, ), )]
http://www.w-s-a.com/news/620163/

相关文章:

  • 淮安软件园哪家做网站各网站特点
  • 网站长尾关键词排名软件重庆荣昌网站建设
  • 建个商城网站多少钱茂名专业网站建设
  • 开通公司网站免费的网站app下载
  • 跨境电商网站模板wordpress壁纸
  • 国内做网站网站代理电子商务网站建设与维护概述
  • 如何做地方网站推广沈阳网势科技有限公司
  • 哈尔滨网站优化技术涵江网站建设
  • 做网站搞笑口号wordpress全屏动画
  • 怎么可以建网站小程序代理项目
  • 怎样做软件网站哪个网站用帝国cms做的
  • 网站开发编程的工作方法wordpress dux-plus
  • 廊坊电子商务网站建设公司网站进不去qq空间
  • 南宁网站推广费用创意网页设计素材模板
  • 深圳技术支持 骏域网站建设wordpress 酒主题
  • 东莞网站建设+旅游网站改版数据来源表改怎么做
  • 手机端做的优秀的网站设计企业做网站大概多少钱
  • 优化网站使用体验手机网站解析域名
  • 网站制作 商务做网站的软件名字全拼
  • 阿里巴巴网官方网站温州网站建设设计
  • 传奇购买域名做网站国外网站设计 网址
  • 西安凤城二路网站建设seo网站是什么
  • 网站后台如何更换在线qq咨询代码在线种子资源网
  • 东莞网站优化制作免费中文wordpress主题下载
  • 东莞建筑设计院排名网络优化论文
  • 做牙工作网站郑州前端开发培训机构
  • 温州专业建站网站制作的管理
  • 公司网站开发策划书有没有专门做教程的网站
  • 江苏省工程建设信息网站一天赚1000块钱的游戏
  • 制作响应式网站报价品牌建设整体体系包括什么