我從 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}'
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}
錯誤的
'1200*\frac{1-{(\frac{1}{1 0.1259})^{12}}}{0.11917}'
在這里生
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}
原始字串問題從“parse_expr”解決,但它改變了運算式,如果有的話請幫忙
uj5u.com熱心網友回復:
可以通過在字串文字前加上 . 來創建原始字串r""。在你的情況下:
from sympy.parsing.latex import parse_latex
r_string = r"1000*\frac{1-{(\frac{1}{1 0.1025})^{10}}}{0.09806}"
expression = parse_latex(r_string)
expression
編輯以容納評論。是的,你有很好的問題:) 對于你的具體情況,你冷做這個s.encode('unicode_escape').decode()。但這很可能會修改反斜杠后面的字符,因此您還必須執行替換以使它們恢復原始意圖。例如:
s = "1000*\frac{1-{(\frac{1}{1 0.1025})^{10}}}{0.09806}"
# convert to raw, according to https://stackoverflow.com/a/65380295/2329968
r_string = s.encode('unicode_escape').decode()
# at this point you have a problem: the character inside s following a
# backslash might change to something else. Need to bring it back
r_string_mod = r_string.replace("x0c", "f")
parse_latex(r_string_mod)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/489685.html
上一篇:mongo-獲取中間檔案的數量
