Как удалить символ из строки в Python
У меня есть строка, например, EXAMPLE
.
Как я могу удалить символ, находящийся в середине, то есть M
? Мне не нужен код. Я хочу понять:
- Заканчиваются ли строки в Python на какой-либо специальный символ?
- Какой способ лучше - сдвигать все символы вправо-влево, начиная с середины, или создать новую строку и не копировать средний символ?
5 ответ(ов)
Это, вероятно, лучший способ:
original = "EXAMPLE"
removed = original.replace("M", "")
Не беспокойтесь о смещении символов и подобных вещах. Большая часть кода на Python работает на гораздо более высоком уровне абстракции.
Чтобы заменить символ в определенной позиции:
s = s[:pos] + s[(pos+1):]
Для замены конкретного символа:
s = s.replace('M', '')
Строки в 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) # преобразуем обратно в строку
Кроме того, вы можете создать новую строку, как показывают другие, взяв всё кроме символа, который хотите удалить, из существующей строки.
Как удалить один символ из строки:
Вот пример, где стек карт представлен в виде символов в строке. Одна из карт случайным образом выбирается (не забудьте импортировать модуль random для использования функции random.choice(), которая выбирает случайный символ из строки).
Создается новая строка cardsLeft
, которая будет содержать оставшиеся карты. Для этого используется функция replace()
, в которой последний параметр указывает, что только одна "карта" должна быть заменена на пустую строку. Этот способ позволяет эффективно удалить один символ из строки, сохраняя остальные символы без изменений.
Другой способ — это использование функции.
Вот пример, как можно удалить все гласные из строки, просто вызвав эту функцию:
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'))
Таким образом, эта функция удалит все гласные из переданной строки.
Есть ли в Python метод подстроки 'contains' для строк?
Объединение двух столбцов текста в DataFrame pandas
Вывод строки в текстовый файл
Преобразование всех строк в списке в целые числа
Как извлечь числа из строки в Python?