Обновление строки с использованием регулярных выражений в Python - PullRequest
0 голосов
/ 02 апреля 2019

Я почти уверен, что мой вопрос очень простой, но я не могу найти ответ на него.Допустим, у нас есть строка ввода, например:

input = "This is an example"

Теперь я хочу просто заменить каждое слово - в общем, каждую подстроку , используя регулярное выражение, «слово» здесь только пример - во входе с другой строкой , которая также включает исходную строку .Например, я хочу добавить @ слева и справа от каждого входного слова.И вывод будет:

output = "@This@ @is@ @an@ @example@"

Какое решение?Я знаю, как использовать re.sub или replace, но я не знаю, как я могу использовать их таким образом, чтобы я мог обновить исходные совпадающие строки и не полностью заменить их чем-то другим.

Ответы [ 4 ]

1 голос
/ 02 апреля 2019

Для этого вы можете использовать группы захвата.

import re

input = "This is an example"
output = re.sub("(\w+)", "@\\1@", input)

Группа захвата - это то, на что вы позже сможете ссылаться, например, в строке подстановки. В этом случае я сопоставляю слово, помещаю его в группу захвата и затем заменяю его тем же словом, но с добавлением @ в качестве префикса и суффикса.

Подробнее о регулярных выражениях в python вы можете прочитать в документах .

1 голос
/ 02 апреля 2019

Вот опция, использующая re.sub с поиском:

input = "This is an example"
output = re.sub(r'(?<!\w)(?=\w)|(?<=\w)(?!\w)', '@', input)

print(output)

@This@ @is@ @an@ @example@
0 голосов
/ 02 апреля 2019

Вы можете сопоставить только границы слов с \b:

import re

input = "This is an example"
output = re.sub(r'\b', '@', input)
print(output)


@This@ @is@ @an@ @example@
0 голосов
/ 02 апреля 2019

Это без повторной библиотеки

a = "This is an example"
l=[]
for i in a.split(" "):
    l.append('@'+i+'@')

print(" ".join(l))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...