Найти точки внутри предложения и заменить их запятыми в Python - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу разделить предложения в документе, но сначала я хочу найти десятичные знаки, номера версий и т. Д. В документе и заменить точки на запятые.Например:

Я использовал стандартную настройку качества «2.00» в Premiere 2.0.1 и указывал ключевой кадр каждые десять кадров.

Я хочу изменить это предложениев приведенной выше форме

Я использовал стандартную настройку качества «2,00» в Premiere 2,0,1 и определял ключевой кадр каждые десять кадров.

re.findall('\d*\.?\d+',s)

этот код находит десятичную дробь, но я не могу изменить точки на запятые

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Вы можете использовать следующий пример кода

 s = 'I used the default "2.00" quality setting in Premiere 2.0.1, and specified a key frame every ten frames.I then ran the 320*240 movie'
s= re.sub(r'(\d*)\.(\d+)', r'\1,\2', s)
print(s)

вывод

I used the default "2,00" quality setting in Premiere 2,0,1, and specified a key frame every ten frames.I then ran the 320*240 movie
0 голосов
/ 18 сентября 2018

Простое решение

import re

stringa = 'I used the default "2.00" quality setting in Premiere 2.0.1, and specified a key frame every ten frames.'

Ele = re.search(r'\s*([\d.]+)', stringa)

stringa.replace(Ele.group(),Ele.group().replace(".",",",1))

Результат:

'I used the default "2,00" quality setting in Premiere 2.0.1, and specified a key frame every ten frames.'
0 голосов
/ 18 сентября 2018

Вы можете использовать re.sub со ссылками на группы.Для этого сначала оберните десятичные дроби в регулярном выражении в группы (...), а затем используйте \1 и \2 в строке замены для ссылки на эти группы.

>>> s
'I used the default "2.00" quality setting in Premiere 2.0.1, and specified a key frame every ten frames.'
>>> re.sub(r'(\d*)\.(\d+)', r'\1,\2', s)
'I used the default "2,00" quality setting in Premiere 2,0,1, and specified a key frame every ten frames.'

Также обратите внимание, что, сделав. необязательно \.? регулярное выражение также может добавить , к многозначным числам, которые вообще не имеют ., поэтому лучше удалить ?.

Однако ИМХО. в "Premiere 2.0.1" следует заменить , а не на ,.Для этого вы можете использовать отрицательные взгляды и взгляды, чтобы за номером не следовала другая цифра или точка.

>>> re.sub(r'(?<![\d.])(\d*)\.(\d+)(?![\d.])', r"\1,\2", s)
'I used the default "2,00" quality setting in Premiere 2.0.1, and specified a key frame every ten frames.'
...