5

Как удалить символ из строки в Python

31

У меня есть строка, например, EXAMPLE.

Как я могу удалить символ, находящийся в середине, то есть M? Мне не нужен код. Я хочу понять:

  • Заканчиваются ли строки в Python на какой-либо специальный символ?
  • Какой способ лучше - сдвигать все символы вправо-влево, начиная с середины, или создать новую строку и не копировать средний символ?

5 ответ(ов)

0

Это, вероятно, лучший способ:

original = "EXAMPLE"
removed = original.replace("M", "")

Не беспокойтесь о смещении символов и подобных вещах. Большая часть кода на Python работает на гораздо более высоком уровне абстракции.

0

Чтобы заменить символ в определенной позиции:

s = s[:pos] + s[(pos+1):]

Для замены конкретного символа:

s = s.replace('M', '')
0

Строки в Python являются неизменяемыми. Однако вы можете преобразовать строку в список, который является изменяемым, а затем снова собрать строку после внесения изменений.

s = "this is a string"

l = list(s)  # преобразуем строку в список

l[1] = ""    # "удаляем" букву 'h' (элемент все еще существует, но стал пустым)
l[1:2] = []  # на самом деле удаляем букву 'h' (элемент действительно убирается из списка)
del(l[1])    # другой способ удалить элемент

p = l.index("a")  # находим позицию буквы 'a'
del(l[p])         # удаляем букву 'a'

s = "".join(l)  # преобразуем обратно в строку

Кроме того, вы можете создать новую строку, как показывают другие, взяв всё кроме символа, который хотите удалить, из существующей строки.

0

Как удалить один символ из строки:

Вот пример, где стек карт представлен в виде символов в строке. Одна из карт случайным образом выбирается (не забудьте импортировать модуль random для использования функции random.choice(), которая выбирает случайный символ из строки).

Создается новая строка cardsLeft, которая будет содержать оставшиеся карты. Для этого используется функция replace(), в которой последний параметр указывает, что только одна "карта" должна быть заменена на пустую строку. Этот способ позволяет эффективно удалить один символ из строки, сохраняя остальные символы без изменений.

0

Другой способ — это использование функции.

Вот пример, как можно удалить все гласные из строки, просто вызвав эту функцию:

def disemvowel(s):
    return s.translate(None, "aeiouAEIOU")

Однако стоит отметить, что метод translate с параметром None больше не поддерживается в Python 3. Вместо этого можно использовать str.translate с str.maketrans():

def disemvowel(s):
    return s.translate(str.maketrans('', '', 'aeiouAEIOU'))

Таким образом, эта функция удалит все гласные из переданной строки.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь