Вставьте знак умножения в скобках - PullRequest
0 голосов
/ 09 ноября 2018

Предположим, у вас есть следующая строка:

5 + 5 (5)

Я хочу вставить знак умножения между 5 и (5)

5 + 5 * (5)

Теперь также предположим, что у вас есть следующие другие возможности:

5 + (5) (5) * * 1016

Я хочу вставить знак умножения между (5) и (5)

* * 5 тысяча двадцать-одина + (5) * (5) * * тысяча двадцать две

Моя попытка:

import re

ex1 = '4+6.9(39.3)(-2.3)(5+4)'

def convert(string):

  return re.sub(r"((?:\d+)|(?:[a-zA-Z]\w*\(\w+\)))((?:[a-zA-Z]\w*)|\()", r"\1*\2", string)

print(convert(ex1))
* 1 028 * 4 + 6,9 * (39,3) (- 2,3) (5 + 4)

Этот код добавляет умножение только к первому экземпляру.

Если строка:

ex2 = '5(5)+5(5)+5(5)'
* +1037 * 5 * (5) + 5 * (5) + 5 * (5)

Код работает для чисел перед скобками.

Как я могу изменить код, чтобы включить закрытые круглые скобки перед открытой?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Если я правильно понимаю, вам нужно вставить знак '*' везде, где появляется '('?

Если это так, это даст вам то, что вам нужно:

ex1 = '4+6.9(39.3)(-2.3)(5+4)'
print(''.join(['*' + x if x == '(' else x for x in ex1]))
#4+6.9*(39.3)*(-2.3)*(5+4)
0 голосов
/ 09 ноября 2018

Вы можете использовать позитивный взгляд:

import re

a = '4+6.9(39.3)(-2.3)(5+4)'

print(re.sub('(?<=\d|\))(\()', '*(', a))
#4+6.9*(39.3)*(-2.3)*(5+4)
...