Advertisement
Guest User

f.ck

a guest
May 31st, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. #! /usr/bin/python3
  2. import os
  3. import re
  4.  
  5.  
  6. # парсер крч.
  7. def parse(exp):
  8. tex = str(exp).replace('**', '^')
  9. tex = tex.replace('*', ' \\cdot ')
  10.  
  11. """ ничо не работает, я тупой, а жизнь отстой """
  12.  
  13. # if len(tex.split('/')) > 1:
  14. # # если есть черта дроби.
  15. # # очень не идеальное решение, работает, если есть только одна черта дроби.
  16. # # возможно надо разбивать не слева/справа от '/', а слева до '(' и справа до ')'.
  17. # print('меняем черту дроби.')
  18. # new_numer_denom = re.split(r'/', tex)
  19. # old_numer_denom = re.split(r'/', tex)
  20. #
  21. # # вместо '/' пишем \frac { числитель } { знаменатель }.
  22. # new_numer_denom[0] = '\\frac{' + new_numer_denom[0] + '}'
  23. # new_numer_denom[1] = '{' + new_numer_denom[1] + '}'
  24. #
  25. # # заменяем старый числитель и знаменатель на новые.
  26. # tex = tex.replace(old_numer_denom[0], new_numer_denom[0])
  27. # tex = tex.replace(old_numer_denom[1], new_numer_denom[1])
  28. #
  29. # # и удаляем черту дроби.
  30. # tex = tex.replace('/', '')
  31.  
  32. # if len(re.split('sqrt', exp)) > 1:
  33. # ищем корень и заменяем его. пока только для квадратного корня.
  34. # print('меняем квадратный корень.')
  35. # этот кусок кода может найти число, от которого берется корень. пока только именно с числом.
  36. # как реализовать для символов - вопрос. ибо надо обрабатывать скобки, но это реализовано ниже.
  37. # sqrt_pattern = '[sqrt(\d)]+'
  38. # sqrt_find_all = re.findall(sqrt_pattern, exp)
  39. # sqrt_values = []
  40. # for sqrt in sqrt_find_all:
  41. # value = sqrt.replace('sqrt(', '')
  42. # value = sqrt.replace(')', '')
  43. # sqrt_values.append(value)
  44.  
  45. # вообщем идем от начала строки после sqrt и считаем сколько было откртых скобок и сколько закрытых.
  46. # по логике, как только эти числа сравнялись, то корень надо закрывать.
  47. # open_brackets_count = 0
  48. # closed_brackets_count = 0
  49. # all_closed_brackets_count = len(tex.split(')')) - 1
  50. # for i in tex.split('sqrt')[1]:
  51. # if i == '(':
  52. # open_brackets_count += 1
  53. # elif i == ')':
  54. # closed_brackets_count += 1
  55. # if open_brackets_count == closed_brackets_count:
  56. # if i == ')':
  57. # # print('время перемен! ' + i)
  58. # if closed_brackets_count != all_closed_brackets_count:
  59. # print('время перемен! ')
  60. # tex = tex.replace(i, '}')
  61. # tex = tex.replace('sqrt(', ' \\sqrt[2]{')
  62.  
  63. # где-то выше есть баг, который пишет } перед ^, не знаю где, но этот quick фикс работает.
  64. # tex = tex.replace('}^2', ')^2')
  65. # и еще какой-то баг с тем, что в конце два }}, а надо )}, ну заменяем чо.
  66. # if closed_brackets_count != all_closed_brackets_count:
  67. # tex = tex[:len(tex) - 2] + ")" + tex[len(tex) - 1:]
  68. return tex
  69.  
  70. # exp = 'sqrt((0.2352*w**4+1.796*w**2+1)**2+(-0.0392*w**5+0.674*w**3+7.41*w)**2)/' \
  71. # '((-0.014*w**3+0.59*w)**2+(-0.124*w**2+1)**2'
  72. # exp = parse(exp)
  73. # os.system('./mathtex.cgi \'' + str(exp) + '\' -m 0 -o sqrt_exp')
  74. # print(exp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement