Python re.sub () с точками - PullRequest
       30

Python re.sub () с точками

0 голосов
/ 27 октября 2018

Я хотел бы поставить пробел до и после точки в тексте, но только если она не является частью даты. До сих пор у меня есть это, и я понял, что я должен сделать что-то с \ D. но оно возвращает букву перед точкой, а не только точку:

string = re.sub("\.", " . ", string)

Например:

Введите текст: 1992.01.04 - мой день рождения.

Требуемый выпуск: 1992.01.04 - мой день рождения.

перед точкой строки есть пробел.

Другой вопрос - то же самое с двоеточием и временем,

Входной текст: время 11:48, сообщается Томом.

Требуемый выход: время 11:48, сообщается Томом.

есть пробел после текста, 'сообщенного' перед двоеточием

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Вам нужно _ положительный взгляд за утверждением._ (или отрицательный, с \d). Смотрите https://docs.python.org/3/library/re.html для деталей.

re.sub("(?<=\D)\.(\D?)", " . ", '1992.01.04 is my birthday.')
0 голосов
/ 27 октября 2018

Вы можете использовать это регулярное выражение, которое делает отрицательный взгляд вперед и отрицательный взгляд сзади, чтобы проверить, окружена ли точка / двоеточие цифрами, и замените его на '\ 1'

(?<!\d\d)([.:])(?!\d+)

Демо, https://regex101.com/r/hr6slz/4

Это регулярное выражение работает как для двоеточия, так и для точки, и вы можете заменить его на '\ 1'

...