用python写数学表达式_标记化Python中的数学表达式

您可以使用tokenize-module. http://docs.python.org/2/library/tokenize.html这是一个例子

>>> s = "sin( 1 + 2 * x ) + tan( 2.123 * x "

>>> import tokenize

>>> from StringIO import StringIO

>>> tokenize.tokenize(StringIO(s).readline)

1,0-1,3: NAME 'sin'

1,3-1,4: OP '('

1,5-1,6: NUMBER '1'

1,7-1,8: OP '+'

1,9-1,10: NUMBER '2'

1,11-1,12: OP '*'

1,13-1,14: NAME 'x'

1,15-1,16: OP ')'

1,17-1,18: OP '+'

1,19-1,22: NAME 'tan'

1,22-1,23: OP '('

1,24-1,29: NUMBER '2.123'

1,30-1,31: OP '*'

1,32-1,33: NAME 'x'

# and now occurs some error you have to catch

还有另一种使用正则表达式的方法:

这是解释reg-ex的链接,该站点还是测试/探索regex的绝佳工具:http://regex101.com/r/bP6kH1

>>> s = "sin( 1 + 2 * x ) + tan( 2.123 * x "

>>> import re

>>> re.findall(r"(\b\w*[\.]?\w+\b|[\(\)\+\*\-\/])", s)

['sin', '(', '1', '+', '2', '*', 'x', ')', '+', 'tan', '(', '2.123', '*', 'x']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值