Выделите части строки python, если они присутствуют в списке слов - PullRequest
0 голосов
/ 21 января 2020

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

r = ''
lofw = ['GO','IS','OD']
mystr1 = 'HISTORICAL'
pre = '<span style="color: red">'
post =  '</span>'
for i in range(0,len(mystr1)-1):
    t = mystr1[i:i+2]
    if t in lofw:
        r = r[:-1] + pre + t + post            
    else:
        r = r[:-1] + t

Этот код работает, если в списке слов нет последовательных слов.

Однако, когда есть последовательные слова, он выдает нежелательные результаты. , Например:

mystr2 = 'HISGODTORICAL'

1 Ответ

1 голос
/ 21 января 2020

Более простым подходом было бы использование str replace метода:

lofw = ['GO','IS','OD']
mystr1 = 'HISTORICAL'

r = mystr1
pre = '<span style="color: red">'
post =  '</span>'
for sub in lofw:
    r = r.replace(sub, pre + sub + post)

Для HISTORICAL это дает:

H<span style="color: red">IS</span>TORICAL

А для HISGODTORICAL это дает:

H<span style="color: red">IS</span><span style="color: red">GO</span>DTORICAL

Если вас беспокоит немедленное закрытие и открытие тегов, вы можете добавить это после l oop:

r = r.replace(post+pre, "")

Так что теперь для HISGODTORICAL мы получим:

H<span style="color: red">ISGO</span>DTORICAL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...