Python3 调用 Node.js 解析 MathJax 公式
【背景】
下面的文本(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 公式相关推荐
- python mathjax_Python3 调用 Node.js 解析 MathJax 公式
[背景]Global well-posedness for the $L^2$-critical Hartree equation on $\mathbb{R}^n$, $n\ge 3$ 被 Mat ...
- 如何使用Node.js解析JSON?
我应该如何使用Node.js解析JSON? 是否有一些模块可以安全地验证和解析JSON? #1楼 我想提一下,全局JSON对象还有其他选择. JSON.parse和JSON.stringify都是同步 ...
- 通过Node.js解析stl文件
通过Node.js解析stl文件 在此之前请确认已安装Node.js,已配置环境变量.如未安装与配置,请查看Node.js安装及环境配置(Windows) 一.下载Node项目文件 Node项目文件下 ...
- 实例讲解node.js解析URL并获取绝对路径和格式化
解析URL url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) 参数 说明 urlStr 网址 parseQueryString 是否 ...
- dotnet调用node.js写的socket服务(websocket/socket/socket.io)
https://github.com/jstott/socketio4net/tree/develop socket.io服务端node.js,.里面有js写的客户端:http://socket.io ...
- 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 ...
- html怎么调用node.js,javascript – 在HTML中使用Node.js模块
我有以下Node.js项目(这是我的问题的最小工作示例): module1.js: module.exports = function() { return "this is module1 ...
- node.js解析微信消息推送xml格式加密的消息
之前写过一个解密json格式加密的,我以为xml的和json的差不多,是上上个星期五吧,我的同事也是在做微信公众号里面的消息推送解密,发现好像只能使用xml加密格式的发送到服务器,我们去年也做过企业微 ...
- node.js解析word文档
最近接触了了一个简历管理的项目,需要将简历上传之后解析出里面的字段内容(如姓名.性别.教育经历.工作经历等),存入数据库中.简历的格式都是标准的格式,可参考猎聘下载下来的格式. 毫无疑问,第一个难点就 ...
最新文章
- DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!
- Java提高篇——单例模式
- java path util,Java URIUtil.canonicalPath方法代码示例
- response.setHeader各种用法 .
- 【搜索引擎Jediael开发4】V0.01完整代码
- 州的先生 python界面 代码完整版(注释)
- 一起来学习LiteOS中断模块的源代码
- Unity3D倒计时两种方法
- Hive 3.1.2 国内镜像下载地址
- 电脑无损分区大小调整
- 迅捷pdf怎么转换成html,PDF怎么转HTML?迅捷PDF转换器还能这么用!
- 数据库中的E—R图画法
- 【Eclipes安装Spring插件】
- 手机无线网卡最高支持到866Mbps
- springboot毕业设计 基于springboot家教预约网站系统毕业设计设计与实现参考
- 什么是SAP的统驭科目
- 网络推广宝 v2007 官方
- 【程序人生】2020 年度总结
- hadoop学习-1
- QTP_QTP学习笔记(1)
热门文章
- 玩ts要注意什么_幼儿园装修要注意什么
- 中day参数介绍_浅谈生物制药中的 CHO 细胞培养工艺开发
- html发送qq邮件消息,Python3实现发送QQ邮件功能(html)_python
- whmcs精仿雨云ModuleSky主题模板
- Easytrader踩坑之旅(二)
- THINKPAD T420(4180J4C)还是THINKPAD T420(4180PLC)好?
- Drupal 7正式版本盛大发布!
- MySQL入门 (二) : SELECT 基础查询
- 使用 jQuery Mobile 与 HTML5 开发 Web App (一) ——开发原则
- Ethercat解析(三)之Ubuntu添加Xenomai实时内核补丁