按照原始字符串解决,从mongodb到python,但是使用parse_latex的新问题
我从mongodb查询中得到关注为字符串:
1000*\frac{1-{(\frac{1}{1+0.1025})^{10}}}{0.09806}'
喜欢将其等同于
expression = '1000*\frac{1-{(\frac{1}{1+0.1025})^{10}}}{0.09806}'
表达 转换为Sympy表达式 有了
expression_fin = parse_latex(expression)
但是我遇到了错误,因为这不是
我尝试的原始字符串:
expression1=f'{expression}'
expression = repr('1000*\frac{1-{(\frac{1}{1+0.1025})^{10}}}{0.09806}')
两种尝试都无法使用 请帮忙 编辑:
def step_exec(step_id, part_req):
print('printing here')
newEq=repr(part_req['extras'][0]['fn_e8wgwASbHjuLR7Mb6mH2pC'])
print(newEq)
# rawtest = r'%s' % newEq
rawtest = parse_expr(newEq, evaluate=False)
sympy_inputFrom_parse_expr=parse_latex(rawtest)
print('sympy_inputFrom_parse_expr',sympy_inputFrom_parse_expr)
latex_inputFromSympy=latex(sympy_inputFrom_parse_expr)
print('latex_inputFromSympy',latex_inputFromSympy)
print(latex_inputFromSympy == part_req['extras'][0]['fn_e8wgwASbHjuLR7Mb6mH2pC'])
pprint.pprint(part_req['extras'][0]['fn_e8wgwASbHjuLR7Mb6mH2pC'])
print('raw here')
rawRstring=r'1200*\frac{1-{(\frac{1}{1+0.1259})^{12}}}{0.11917}'
print('rawRstring',rawRstring)
parsLatToSympy = parse_latex(rawRstring)
print('parsLatToSympy',parsLatToSympy)
SympyTOlatex=latex(parsLatToSympy)
print('SympyTOlatex',SympyTOlatex)
print('latex_inputFromSympy', latex_inputFromSympy)
return step_id
结果:
printing here
'1200*\ frac {1 - {(\ frac {1}
{1 + 0.1259}) ** 12)/0.11917)
latex_inputfromsympy 1200 \ frac {1 - \ frac {1} {\ left(0.1259 + 1 \ right)^{12}}}}}}}} {0.11917} {0.11917}
*
false'1200 frac {1} {1+0.1259})^{12}}}} {0.11917}'
raw
rawRstring 1200*\ frac {1 - {(\ frac {1} {1} {1+0.1259}}}}}}}}}}}}}}}} 0.11917}
parslattosympy 1200*(((1-1/(0.1259 + 1)** 12
) } {0.11917}
latex_inputfromsympy 1200 \ frac {1 - \ frac {1} {\ left(0.1259 + 1 \ right)^{12}}}}}} {0.11917
} 请帮忙
i am getting following as string from MongoDB query:
1000*\frac{1-{(\frac{1}{1+0.1025})^{10}}}{0.09806}'
like to take it to equate to expression
expression = '1000*\frac{1-{(\frac{1}{1+0.1025})^{10}}}{0.09806}'
then
convert to sympy expression
with
expression_fin = parse_latex(expression)
but I got errors as this is not a raw string
I tried the following:
expression1=f'{expression}'
expression = repr('1000*\frac{1-{(\frac{1}{1+0.1025})^{10}}}{0.09806}')
both attempts does not works
please help if any
Edited:
def step_exec(step_id, part_req):
print('printing here')
newEq=repr(part_req['extras'][0]['fn_e8wgwASbHjuLR7Mb6mH2pC'])
print(newEq)
# rawtest = r'%s' % newEq
rawtest = parse_expr(newEq, evaluate=False)
sympy_inputFrom_parse_expr=parse_latex(rawtest)
print('sympy_inputFrom_parse_expr',sympy_inputFrom_parse_expr)
latex_inputFromSympy=latex(sympy_inputFrom_parse_expr)
print('latex_inputFromSympy',latex_inputFromSympy)
print(latex_inputFromSympy == part_req['extras'][0]['fn_e8wgwASbHjuLR7Mb6mH2pC'])
pprint.pprint(part_req['extras'][0]['fn_e8wgwASbHjuLR7Mb6mH2pC'])
print('raw here')
rawRstring=r'1200*\frac{1-{(\frac{1}{1+0.1259})^{12}}}{0.11917}'
print('rawRstring',rawRstring)
parsLatToSympy = parse_latex(rawRstring)
print('parsLatToSympy',parsLatToSympy)
SympyTOlatex=latex(parsLatToSympy)
print('SympyTOlatex',SympyTOlatex)
print('latex_inputFromSympy', latex_inputFromSympy)
return step_id
the result:
printing here
'1200*\frac{1-{(\frac{1}{1+0.1259})^{12}}}{0.11917}'
sympy_inputFrom_parse_expr 1200*((1 - 1/(0.1259 + 1)**12)/0.11917)
latex_inputFromSympy 1200 \frac{1 - \frac{1}{\left(0.1259 + 1\right)^{12}}}{0.11917}
False
'1200*\frac{1-{(\frac{1}{1+0.1259})^{12}}}{0.11917}'
raw here
rawRstring 1200*\frac{1-{(\frac{1}{1+0.1259})^{12}}}{0.11917}
parsLatToSympy 1200*((1 - 1/(0.1259 + 1)**12)/0.11917)
SympyTOlatex 1200 \frac{1 - \frac{1}{\left(0.1259 + 1\right)^{12}}}{0.11917}
latex_inputFromSympy 1200 \frac{1 - \frac{1}{\left(0.1259 + 1\right)^{12}}}{0.11917}
the raw string problem is solved from "parse_expr" but it changes the expression
please help if any
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以通过将字符串文字带有
r“”
来创建原始字符串。在您的情况下:编辑以适应评论。是的,您遇到的好问题:)对于您的特定情况,您冷酷执行此
s.Encode('unicode_escape')。decode()
。但这很可能会修改后斜线后的角色,因此您还必须执行替换才能使它们回到原始意图。例如:Raw string can be created by prefixing a string literal with
r""
. In your case:EDIT to accommodate comment. Yeah, nice problem you have :) For your specific case you cold do this
s.encode('unicode_escape').decode()
. But this is likely going to modify the characters following backslashes, so you would also have to perform a replacement to bring them back to the original intent. For example: