Как добавить что-то после каждого числа в строке в PYTHON? - PullRequest
3 голосов
/ 24 марта 2012

Скажем, я хочу изменить строку 'A = (x + 2. ) * (y + 3. ) - 1 '

до

'A = (x + 2.0e0 ) * (y + 3.0e0 ) - 1.0e0 '.

Каждое число, подобное 2. или просто 2, должно быть изменено Как это сделать?

Большое спасибо!

Ответы [ 2 ]

6 голосов
/ 24 марта 2012

Учитывая комментарий, который вы написали, этот вид регулярного выражения должен работать:

import re

str = 'A = (x+2.)*(y+3.)-1'
print re.sub(r'(\d+)\.?',r'\1.0e0',str)

Вывод:

A = (x+2.0e0)*(y+3.0e0)-1.0e0

Объяснение регулярного выражения:

  • (...) - означает группу захвата, то, что вам нужно захват для повторного использования во время замены
  • \d - означает любое число, эквивалентное [0-9]
  • + - означает 1 или более вхождение, эквивалентное {1,}
  • \.? - означает, что мы хотим либо 0, либо 1 dot.? эквивалентно {0,1}

В замен:

  • \1 - означает, что мы хотим взять первую захваченную группу ивставьте сюда
2 голосов
/ 24 марта 2012

Вы захотите взглянуть на re модуль .В частности, re.sub().Прочитайте всю документацию по этой функции.Он может делать довольно мощные вещи.Либо это, либо что-то вроде for match in re.findall() конструкции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...