Как проверить, существует ли последовательность символов в списке?

Как проверить, существует ли последовательность символов в списке?

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

message: DDMCAXQVEKGYBNDDMZUH
Occurence is: DDM

list: ['D', 'D', 'M', 'C', 'A', 'X', 'Q', 'V', 'E', 'K', 'G', 'Y', 'B', 'N', 'D', 'D', 'M', 'Z', 'U', 'H']

В настоящее время я просто превращаю сообщение в список. Я пробовал разные способы, которые были безуспешными, поэтому я не опубликовал это. На самом деле не прошу вас написать код, но хотя бы объясните, как этого добиться.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
991
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Гораздо проще проверить, существует ли строка в другой строке, поскольку вы можете просто использовать оператор in:

if 'DDM' in message:
     # do something

Но поскольку ваша цель — изменить первую букву вхождения, вы можете использовать метод str.index, чтобы получить индекс вхождения, а затем собрать новую строку с кусочками текущей строки и новой буквы:

try:
    i = message.index('DDM')
    message = message[:i] + new_letter + message[i + 1:]
except ValueError:
    raise RuntimeError("Sequence 'DDM' not found in message.")

Вы можете использовать re.sub():

import re

s = 'DDMCAXQVEKGYBNDDMZUH'

re.sub(r'DDM', '$DM', s)
# $DMCAXQVEKGYBN$DMZUH

Простое решение с циклом for:

msg = 'DDMCAXQVEKGYBNDDMZUH'
occ = 'DDM'

for i in range(len(msg)):
    if msg[i:i+len(occ)] == occ:
        msg = msg[:i] + 'x' + msg[i+1:]

в результате xDMCAXQVEKGYBNxDMZUH

Это также работает с перекрывающимися подстроками. Например:

msg = 'AAABAA'
occ = 'AA'

даст xxABxA

Самый простой способ - использовать строковую функцию заменять().

string.replace(s, old, new[, maxreplace])

Return a copy of string s with all occurrences of substring old replaced by new. If the optional argument maxreplace is given, the first maxreplace occurrences are replaced.

message = "DDMCAXQVEKGYBNDDMZUH"
print message.replace("DDM", "ABC", 1)

Функция замены заменит первое вхождение DDM в строке сообщения.

вывод: ABCCAXQVEKGYBNDDMZUH

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

message = "DDMCAXQVEKGYBNDDMZUH"
print message.replace("DDM", "ADM", 1)

вывод: ADMCAXQVEKGYBNDDMZUH

Другие вопросы по теме