Как остановить поиск после нахождения первого нужного символа и скопировать оставшийся текст? - PullRequest
1 голос
/ 31 октября 2019

У меня есть строка, имеющая CUSTOMER_SEGMENT_PRIV, и я хочу получить вывод CUSTOMER_SEGMENT equal to PRIV

>>> re.sub('_{1}',' ot lauqe ','CUSTOMER_SEGMENT_PRIV'[::-1])[::-1]
'CUSTOMER equal to SEGMENT equal to PRIV'
>>> re.sub('((?:_[^_\r\n]*){1})$',' ot lauqe ','CUSTOMER_SEGMENT_PRIV'[::-1])[::-1]
'CUSTOMER equal to SEGMENT equal to PRIV'

Что я хочу:

'CUSTOMER_SEGMENT equal to PRIV'

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Более короткий путь с использованием хорошего регулярного выражения:

>>> import re
>>> re.sub( r'_([^_\r\n]*)$', ' equal to \\1', 'CUSTOMER_SEGMENT_PRIV' )
'CUSTOMER_SEGMENT equal to PRIV'
1 голос
/ 31 октября 2019

Нет необходимости использовать регулярные выражения, просто используйте str.rsplit с maxsplit=1 и str.join:

>>> s = 'CUSTOMER_SEGMENT_PRIV'
>>> x = s.rsplit('_', 1)
>>> x
['CUSTOMER_SEGMENT', 'PRIV']
>>> ' equal to '.join(x)
'CUSTOMER_SEGMENT equal to PRIV'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...