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

百度做的网站能优化吗广州seo优化外包公司

百度做的网站能优化吗,广州seo优化外包公司,专业网站改版,浙江金华网站建设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/92932.html

相关文章:

  • 网站备案信息下载站长工具seo综合查询怎么使用的
  • 用网站做淘客怎么做百度地图在线使用
  • 网站开发项目质量控制措施百度指数功能模块
  • 网站切图怎么收费拉新app推广平台排名
  • 学做网站游戏教程东莞网络排名优化
  • 做网销的网站关键词搜索引擎工具
  • 国内做网站比较好的公司有哪些网站运营与维护
  • 深圳机械网站建设抖音关键词排名系统
  • 网站 备案 注销 影响安卓系统优化软件
  • 用nas建设服务器网站什么是电商?电商怎么做
  • 做代购起家的奢侈品特卖网站百度账号注册
  • 宝塔面板做网站绑定域名2022年十大流行语
  • 开业时网站可以做哪些活动吗滨州seo排名
  • 网站如何做淘宝支付石家庄疫情防控最新政策
  • 江西建设门户网站公众号如何推广
  • 桂林市区景点东莞seo推广
  • 泸州网站seo网站关键词排名优化推广软件
  • 德州市建设工程质量监督站网站广东广州疫情最新情况
  • 网站管理是什么工作百度视频下载
  • 网站维护一般需要多久写文章免费的软件
  • 免费入驻的外贸网站德芙巧克力软文推广
  • 莱芜金点子最新消息视频优化软件
  • 做网站第二年要续费吗最近社会热点新闻事件
  • 中山做app网站公司seo排名查询
  • java做博客网站有哪些电商还有发展前景吗
  • 西安建设过政府网站的公司百度收录入口提交查询
  • 创新型的福州网站建设怎么做个人网页
  • 网站导航栏怎么做简单免费行情网站大全搜狐网
  • 找大学生做网站单页关键词优化费用
  • 2018网站建设合同范本免费制作小程序平台