/
Вопросы и ответы
/
Python
/

Какая функция нужна для замены символа в строке в Python?

Какая функция нужна для замены символа в строке в Python?

4 года назад

Andrey Moshkov

Ответы

2

Для замены символа в строке используется метод 'replace()'. В качестве обязательных аргументов методу передаются искомая строка и строка, на которую нужно заменить искомую.

1
2
3
4
5
txt = 'I like bananas'

x = txt.replace('bananas', 'apples')

print(x) # => I like apples

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

1
2
3
4
5
txt = 'one one was a race horse, two two was one too.'

x = txt.replace('one', 'three')

print(x) # => three three was a race horse, two two was three too.

или

1
2
3
4
5
txt = 'one one was a race horse, two two was one too.'

x = txt.replace('one', 'three', 2)

print(x) # => three three was a race horse, two two was one too.

4 года назад

Владимир Устянивский

0

Символ или подстроку в строке заменяет метод replace(старое, новое):

1
2
text = "hello world"
print(text.replace("o", "0"))  # => hell0 w0rld

Метод возвращает новую строку, исходная не меняется. Результат нужно сохранить: text = text.replace("o", "0").

Заменить только первые вхождения

Третий аргумент — сколько замен сделать:

1
print("hello world".replace("o", "0", 1))  # => hell0 world

Заменить символ по номеру позиции

Строки в Python неизменяемые, поэтому присвоить символ по индексу нельзя:

1
2
3
s = "кот"
s[1] = "и"
# TypeError: 'str' object does not support item assignment

Соберите новую строку из срезов:

1
2
3
s = "кот"
s = s[:1] + "и" + s[2:]
print(s)  # => кит

Или через список, если замен много:

1
2
3
chars = list("кот")
chars[1] = "и"
print("".join(chars))  # => кит

Заменить несколько символов сразу

translate с таблицей замен меняет каждый символ на свой за один проход:

1
2
table = str.maketrans("lo", "10")
print("hello world".translate(table))  # => he110 w0r1d

Удалить символы: третий аргумент maketrans:

1
2
table = str.maketrans("", "", "!?.")
print("Привет?! Как дела.".translate(table))  # => Привет Как дела

Замена по шаблону

Для сложных правил используют регулярные выражения:

1
2
3
4
import re

phone = "8 (912) 345-67-89"
print(re.sub(r"\D", "", phone))  # => 89123456789 — убрать всё, кроме цифр

Замена без учёта регистра

replace различает заглавные и строчные буквы. Без учёта регистра заменяют через re.sub с флагом:

1
2
import re
print(re.sub("кот", "пёс", "Кот и кот", flags=re.IGNORECASE))  # => пёс и пёс

Чем заменить ∨ и ∧ в коде

Логические знаки из математики в Python записывают словами:

ЗнакВ PythonПример
∨ (ИЛИ)ora > 0 or b > 0
∧ (И)anda > 0 and b > 0
¬ (НЕ)notnot a
≠!=a != b

Строки и их методы разбирают в бесплатном курсе «Основы Python», регулярные выражения — на курсе «Регулярные выражения».

18 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845