Python Regex заменить часть строки - PullRequest
1 голос
/ 21 марта 2019

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

Hello/My daugher/son

Вывод должен выглядеть следующим образом:

Hello    My daugher/son

Я попытался использовать re.sub ():

for x in a:
    x = re.sub('\/[A-Z]', '\t[A-Z]', x)

Но тогдамой вывод изменится на:

Hello    [A-Z]y daugher/son

Что на самом деле не то, что я хочу.Есть ли лучший способ справиться с этим, может быть, не в регулярных выражениях?

1 Ответ

2 голосов
/ 21 марта 2019

Вы можете заменить /(?=[A-Z]) на \t.Обратите внимание, что в Python вам не нужно экранировать / как \/

Проверьте этот код Python,

import re 

s = 'Hello/My daugher/son'
print(re.sub(r'/(?=[A-Z])',r'\t',s))

Prints,

Hello   My daugher/son

В качестве альтернативы,следуя тому, как вы пытались заменить, вам нужно захватить заглавную букву в группе, используя /([A-Z]) regex, а затем заменить ее на \t\1, чтобы восстановить то, что было захвачено в group1.Проверьте это коды Python,

import re 

s = 'Hello/My daugher/son'
print(re.sub(r'/([A-Z])',r'\t\1',s))

Снова печатает,

Hello   My daugher/son
...