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

百度做的网站能优化吗百度大搜数据多少钱一条

百度做的网站能优化吗,百度大搜数据多少钱一条,公司制作网站费用,购物小程序怎么做1、问题背景 我们在使用 LXML 库解析 MathML 表达式时,可能会遇到这样一个问题:在递归解析过程中,我们可能会重复进入同一个节点,导致解析结果不正确。例如,我们希望将以下 MathML 表达式解析为 Python 表达式&#x…

在这里插入图片描述

1、问题背景

我们在使用 LXML 库解析 MathML 表达式时,可能会遇到这样一个问题:在递归解析过程中,我们可能会重复进入同一个节点,导致解析结果不正确。例如,我们希望将以下 MathML 表达式解析为 Python 表达式:

<?xml version="1.0"?>
<math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/1998/Math/MathML http://www.w3.org/Math/XMLSchema/mathml2/mathml2.xsd"><mrow><mfrac><mn>3</mn></mn><mn>5</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),events=events)for action, elem in context:if (action=='start') and (elem.tag=='mrow'):exppy+='('if (action=='end') and (elem.tag=='mrow'):exppy+=')'if (action=='start') and (elem.tag=='mfrac'):mmlaux=etree.tostring(elem[0])exppy+=parseMML(mmlaux)exppy+='/'mmlaux=etree.tostring(elem[1])exppy+=parseMML(mmlaux)if action=='start' and elem.tag=='mn': #this is a numberexppy+=elem.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),events=events)nodestack=[]for action, elem in context:if action=='start' and elem.tag in nodestack:continueif (action=='start') and (elem.tag=='mrow'):nodestack.append(elem.tag)exppy+='('if (action=='end') and (elem.tag=='mrow'):nodestack.pop()exppy+=')'if (action=='start') and (elem.tag=='mfrac'):nodestack.append(elem.tag)mmlaux=etree.tostring(elem[0])exppy+=parseMML(mmlaux)exppy+='/'mmlaux=etree.tostring(elem[1])exppy+=parseMML(mmlaux)if action=='start' and elem.tag=='mn': #this is a numberexppy+=elem.textreturn (exppy)

使用该代码,我们可以得到正确的解析结果:

['(', '(', '3', ')', '/', '(', '5', ')', ')']
http://www.ds6.com.cn/news/37123.html

相关文章:

  • asp网站建设外文参考文献镇江网站建设推广
  • 成都o2o网站建设推广网站怎么制作
  • 设计师招聘平台seo系统优化
  • 株洲公司做网站seo公司
  • 招聘设计师去哪个网站html做一个简单的网页
  • 网站上面的内容里面放照片怎么做中国世界排名
  • 免费推广企业网站百度seo优化关键词
  • wordpress 自媒体插件seo招聘网
  • 生物制药公司网站建设东莞seo关键词排名优化排名
  • cnzz网站排名是怎么做的竞价推广哪家公司好
  • 电子商务网站页面设计图片营销比较成功的品牌
  • 西安网站建设熊掌seo点击软件排名优化
  • 乌鲁木齐新市网站建设新手怎么做电商运营
  • 如何选择网站关键词十大经典案例
  • 网站建设 知乎域名查询注册商
  • 怎么做企业营销型网站360指数查询工具
  • 黄骅做网站手机如何制作网站
  • 重庆旅游网站建设公司简单网站建设优化推广
  • 关于做我女朋友的网站市场营销培训
  • 成都手机网站建设好网站
  • 查询独立ip同一服务器的网站百度一下百度一下你知道
  • 深圳做网站电话查询关键词
  • 哪个网站可以接做美工的活儿交换链接
  • wordpress 附件 标签天津seo网络营销
  • 江西网站备案流程潍坊网站开发公司
  • 网站自己建设制作链接的app的软件
  • 网站模板去哪下载太原百度快速优化排名
  • 昆明网站词排名优化网站app免费生成软件
  • 怎么在58建设企业的网站电商运营方案计划书
  • app软件开发公司 用友yonmakerseo搜索引擎优化方案