【背景】

下面的文本(https://www.aimsciences.org/article/doi/10.3934/cpaa.2009.8.1725)

Global well-posedness for the $L^2$-critical Hartree  equation on $\mathbb{R}^n$, $n\ge 3$

被 MathJax 渲染成

需要解析成

Global well-posedness for the L2-critical Hartree equation on Rn, n≥3

【环境】

  • OS 版本:Windows10 x64 1803

  • Python版本:Python 3.6.5 x64

  • Node.js 版本:Node.js 10.14.2

  • mathjax-node:mathjax-node@2.1.1

npm install -g mathjax-node
npm list --depth=0 -global
set node_path=C:\Users\walker\AppData\Roaming\npm\node_modules

【t.js】

var mjAPI = require("mathjax-node")
function MathJax2Xml(mathjaxFormula) {mjAPI.config({});mjAPI.start();mjAPI.typeset({math: mathjaxFormula,format: "TeX",mml: true}, function (data) {if (!data.errors) {console.log(data.mml);} else {console.log("<p>ERROR</p>");}});
}var args = process.argv.splice(2);
MathJax2Xml(args[0])

【t.py】

#encoding: utf-8
#author: walker
# date: 2019-05-17
# summary: 调用 nodejs 处理 mathjax 公式import re
from subprocess import check_output
from parsel import Selectordef GetXml(mathjaxFormula):r""" 将 mathjax 公式转为 xml """bytesTxt = check_output(['node', 't.js', mathjaxFormula], timeout=100)xmlText = bytesTxt.decode('utf8').strip()# print('xmlText: %s' % xmlText)return xmlTextdef Xml2PlainText(xmlText):r""" 将 xml 转换为普通文本 """sel = Selector(text=xmlText, type='xml')plainText = sel.xpath('string(.)').get().strip()plainText = re.sub(r'\s+', '', plainText)    # 去掉空白# print('plainText: %s' % plainText)return plainTextdef FnRepl(matched):r""" re.sub 的回调函数 """mathjaxFormula = matched.group(0)mathjaxFormula = mathjaxFormula[1:-1]  # 去掉前后的 $ 符号return Xml2PlainText(GetXml(mathjaxFormula))def Convert(mathjaxText):plainText = re.sub('\$[\s\S]+?\$', FnRepl, mathjaxText)plainText = re.sub(r'\s+', ' ', plainText)    # 将多余空白替换成单个空格return plainTextif __name__ == '__main__':mathjaxText = 'Global well-posedness for the $L^2$-critical Hartree  equation on $\mathbb{R}^n$, $n\ge 3$'plainText = Convert(mathjaxText)print('mathjaxText: %s' % mathjaxText)print('plainText: %s' % plainText)

【相关阅读】

  • Python3 调用 js 函数

  • XPath 与 CSS (parsel)

*** walker ***

转载于:https://blog.51cto.com/walkerqt/2396430

Python3 调用 Node.js 解析 MathJax 公式相关推荐

  1. python mathjax_Python3 调用 Node.js 解析 MathJax 公式

    [背景]Global well-posedness for the $L^2$-critical Hartree  equation on $\mathbb{R}^n$, $n\ge 3$ 被 Mat ...

  2. 如何使用Node.js解析JSON?

    我应该如何使用Node.js解析JSON? 是否有一些模块可以安全地验证和解析JSON? #1楼 我想提一下,全局JSON对象还有其他选择. JSON.parse和JSON.stringify都是同步 ...

  3. 通过Node.js解析stl文件

    通过Node.js解析stl文件 在此之前请确认已安装Node.js,已配置环境变量.如未安装与配置,请查看Node.js安装及环境配置(Windows) 一.下载Node项目文件 Node项目文件下 ...

  4. 实例讲解node.js解析URL并获取绝对路径和格式化

    解析URL url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) 参数 说明 urlStr 网址 parseQueryString 是否 ...

  5. dotnet调用node.js写的socket服务(websocket/socket/socket.io)

    https://github.com/jstott/socketio4net/tree/develop socket.io服务端node.js,.里面有js写的客户端:http://socket.io ...

  6. java调用nodejs程序,从java里面调用node.js脚本

    How can I call a node.js inside java and save the console.log values in a String variable? 解决方案 It i ...

  7. html怎么调用node.js,javascript – 在HTML中使用Node.js模块

    我有以下Node.js项目(这是我的问题的最小工作示例): module1.js: module.exports = function() { return "this is module1 ...

  8. node.js解析微信消息推送xml格式加密的消息

    之前写过一个解密json格式加密的,我以为xml的和json的差不多,是上上个星期五吧,我的同事也是在做微信公众号里面的消息推送解密,发现好像只能使用xml加密格式的发送到服务器,我们去年也做过企业微 ...

  9. node.js解析word文档

    最近接触了了一个简历管理的项目,需要将简历上传之后解析出里面的字段内容(如姓名.性别.教育经历.工作经历等),存入数据库中.简历的格式都是标准的格式,可参考猎聘下载下来的格式. 毫无疑问,第一个难点就 ...

最新文章

  1. DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!
  2. Java提高篇——单例模式
  3. java path util,Java URIUtil.canonicalPath方法代码示例
  4. response.setHeader各种用法 .
  5. 【搜索引擎Jediael开发4】V0.01完整代码
  6. 州的先生 python界面 代码完整版(注释)
  7. 一起来学习LiteOS中断模块的源代码
  8. Unity3D倒计时两种方法
  9. Hive 3.1.2 国内镜像下载地址
  10. 电脑无损分区大小调整
  11. 迅捷pdf怎么转换成html,PDF怎么转HTML?迅捷PDF转换器还能这么用!
  12. 数据库中的E—R图画法
  13. 【Eclipes安装Spring插件】
  14. 手机无线网卡最高支持到866Mbps
  15. springboot毕业设计 基于springboot家教预约网站系统毕业设计设计与实现参考
  16. 什么是SAP的统驭科目
  17. 网络推广宝 v2007 官方
  18. 【程序人生】2020 年度总结
  19. hadoop学习-1
  20. QTP_QTP学习笔记(1)

热门文章

  1. 玩ts要注意什么_幼儿园装修要注意什么
  2. 中day参数介绍_浅谈生物制药中的 CHO 细胞培养工艺开发
  3. html发送qq邮件消息,Python3实现发送QQ邮件功能(html)_python
  4. whmcs精仿雨云ModuleSky主题模板
  5. Easytrader踩坑之旅(二)
  6. THINKPAD T420(4180J4C)还是THINKPAD T420(4180PLC)好?
  7. Drupal 7正式版本盛大发布!
  8. MySQL入门 (二) : SELECT 基础查询
  9. 使用 jQuery Mobile 与 HTML5 开发 Web App (一) ——开发原则
  10. Ethercat解析(三)之Ubuntu添加Xenomai实时内核补丁