Добавить кавычки в список слов в предложении в Python, используя регулярные выражения - PullRequest
1 голос
/ 21 марта 2019

У меня есть список слов, таких как:

["apple", "orange", "plum"]

Я хотел бы добавить в строку цитаты только к этим словам:

Rita has apple  ----> Rita has "apple"
Sita has "apple" and plum ----> Sita has "apple" and "plum"

Как мне добиться этого в Pythonиспользуя регулярное выражение?

Ответы [ 3 ]

1 голос
/ 21 марта 2019

Вы можете использовать re.sub с шаблоном чередования, созданным путем соединения слов в списке. Включите шаблон чередования в утверждения границы слова \b, чтобы он соответствовал только целым словам. Используйте отрицательный lookbehind и lookahead, чтобы избежать совпадения слов, уже заключенных в двойные кавычки:

import re
words = ["apple", "orange", "plum"]
s = 'Sita has apple and "plum" and loves drinking snapple'
print(re.sub(r'\b(?!<")(%s)(?!")\b' % '|'.join(words), r'"\1"', s))

Это выводит:

Sita has "apple" and "plum" and loves drinking snapple

Демо: https://ideone.com/Tf9Aka

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

re.sub прекрасно справится с этим

import re

mystr = "Rita has apple"
mylist = ["apple", "orange", "plum"]

for item in mylist:
    mystr = re.sub(item, '\"%s\"'%item, mystr)

print(mystr)
0 голосов
/ 21 марта 2019

Решение без использования регулярных выражений:

txt = "Sita has apple and plum"
words = ["apple", "orange", "plum"]
txt = " ".join(["\""+w+"\"" if w in words else w for w in txt.split()])
print (txt)

txt = "Rita drinks apple flavored snapple?"
txt = " ".join(["\""+w+"\"" if w in words else w for w in txt.split()])
print (txt)
...