Удалите цифры вокруг определенного знака препинания с помощью регулярных выражений в Python - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь удалить цифры, которые прикреплены к знаку препинания, но не получается:

a = 'Car 1234 5678;91012 14567'

, и мне нужно получить:

a_new = 'Car 1234 14567'

Я пытался: re.sub('\d{4}\;\d{5}', '', ss) и это сработало, однако я не знаю, сколько у меня цифр около ;, поэтому я попытался:

re.sub('\d\;\d', '', ss), и это не удалось (вывод совпадает с вводом).

Я изучаю regex101.com, но все еще не повезло.

Ответы [ 4 ]

0 голосов
/ 09 февраля 2019

Регулярное выражение, которое вы использовали \d;\d, должно работать, но оно будет заменять только числа, непосредственно окружающие точку с запятой, поскольку \ d обозначает одну цифру.

Ваше решение будет \d+;\d+ с добавлениемсимвол ищет хотя бы одну, но столько, сколько есть, цифр.

итак ...

a = 'Car 1234 5678;91012 14567'

re.sub('\d+;\d+ ', '', a)

возвращает

'Car 1234  14567'
0 голосов
/ 09 февраля 2019

Просто используйте +, чтобы указать больше цифр, как показано ниже.

a = 'Car 1234 5678;91012 14567'
re.sub('\d+;\d+ ','',a)

Вывод:

'Car 1234 14567'
0 голосов
/ 09 февраля 2019

Как насчет

import re

a = 'Car 1234 5678;91012 14567'

print(re.sub('\d*;\d* ', '', a))

#'Car 1234 14567'

Обратите внимание на конечный пробел в конце паттерна re.Это приведет только к одному пробелу в середине вместо двух.

0 голосов
/ 09 февраля 2019

Вы можете просто сделать:

import re
a='Car 1234 5678;91012 14567'

re.sub("[0-9]*;[0-9]*","",a)

Вывод:

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