Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/python3
- import os
- import re
- # парсер крч.
- def parse(exp):
- tex = str(exp).replace('**', '^')
- tex = tex.replace('*', ' \\cdot ')
- """ ничо не работает, я тупой, а жизнь отстой """
- # if len(tex.split('/')) > 1:
- # # если есть черта дроби.
- # # очень не идеальное решение, работает, если есть только одна черта дроби.
- # # возможно надо разбивать не слева/справа от '/', а слева до '(' и справа до ')'.
- # print('меняем черту дроби.')
- # new_numer_denom = re.split(r'/', tex)
- # old_numer_denom = re.split(r'/', tex)
- #
- # # вместо '/' пишем \frac { числитель } { знаменатель }.
- # new_numer_denom[0] = '\\frac{' + new_numer_denom[0] + '}'
- # new_numer_denom[1] = '{' + new_numer_denom[1] + '}'
- #
- # # заменяем старый числитель и знаменатель на новые.
- # tex = tex.replace(old_numer_denom[0], new_numer_denom[0])
- # tex = tex.replace(old_numer_denom[1], new_numer_denom[1])
- #
- # # и удаляем черту дроби.
- # tex = tex.replace('/', '')
- # if len(re.split('sqrt', exp)) > 1:
- # ищем корень и заменяем его. пока только для квадратного корня.
- # print('меняем квадратный корень.')
- # этот кусок кода может найти число, от которого берется корень. пока только именно с числом.
- # как реализовать для символов - вопрос. ибо надо обрабатывать скобки, но это реализовано ниже.
- # sqrt_pattern = '[sqrt(\d)]+'
- # sqrt_find_all = re.findall(sqrt_pattern, exp)
- # sqrt_values = []
- # for sqrt in sqrt_find_all:
- # value = sqrt.replace('sqrt(', '')
- # value = sqrt.replace(')', '')
- # sqrt_values.append(value)
- # вообщем идем от начала строки после sqrt и считаем сколько было откртых скобок и сколько закрытых.
- # по логике, как только эти числа сравнялись, то корень надо закрывать.
- # open_brackets_count = 0
- # closed_brackets_count = 0
- # all_closed_brackets_count = len(tex.split(')')) - 1
- # for i in tex.split('sqrt')[1]:
- # if i == '(':
- # open_brackets_count += 1
- # elif i == ')':
- # closed_brackets_count += 1
- # if open_brackets_count == closed_brackets_count:
- # if i == ')':
- # # print('время перемен! ' + i)
- # if closed_brackets_count != all_closed_brackets_count:
- # print('время перемен! ')
- # tex = tex.replace(i, '}')
- # tex = tex.replace('sqrt(', ' \\sqrt[2]{')
- # где-то выше есть баг, который пишет } перед ^, не знаю где, но этот quick фикс работает.
- # tex = tex.replace('}^2', ')^2')
- # и еще какой-то баг с тем, что в конце два }}, а надо )}, ну заменяем чо.
- # if closed_brackets_count != all_closed_brackets_count:
- # tex = tex[:len(tex) - 2] + ")" + tex[len(tex) - 1:]
- return tex
- # exp = 'sqrt((0.2352*w**4+1.796*w**2+1)**2+(-0.0392*w**5+0.674*w**3+7.41*w)**2)/' \
- # '((-0.014*w**3+0.59*w)**2+(-0.124*w**2+1)**2'
- # exp = parse(exp)
- # os.system('./mathtex.cgi \'' + str(exp) + '\' -m 0 -o sqrt_exp')
- # print(exp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement