Работа со строками

Строки в Python хранятся в Unicode.

В Python нет отдельного типа для одного символа. Символ это str длинной 1.

Индексация

str индексируются как перечисляемые типы. К ним можно применять срезы и итерировать по символам.

s = "привет"
s[1] == "p" # True
for ss in s:
    print(ss)

Изменение

str нельзя изменить.

s = "привет"
s[1] = "Ф" # Ошибка

Чтобы изменить строку надо создать новую из старой или превратить ее в список.

s = "привет"
s = s[0:1] + "Ф" + s[2:] # Успешно

s = "привет"
vs = list(s)
vs[1] = "Ф"
s = ''.join(vs) # Успешно

Некоторые методы

find

Поиск подстроки

s = "hello world"
x = s.find("world") # x == 6
x = s.find("code") # x == -1

startswith и endswith

Проверка, что строка начинается или заканчивается на подстроку

s = "hello world"
x = s.startswith("hello") # x == True
x = s.endswith("code") # x == False

+

Конкатенация строк

a = "hello"
b = "world"
c = a + " " + b #c == "hello world"

split

Разбивает строку на список строк с использованием разделителя (по умолчанию пробел)

s = "goodbye|blue|sky"
d = s.split("|") # d == ['goodbye', 'blue', 'sky']

join

Собирает строку из списка строк с использованием разделителя

jp = ["goodbye", "blue", "sky"]
sep = "_"
s = sep.join(jp) # s == "goodbye_blue_sky"

strip

Удаляет из начала и конца строки пробельные символы

s = "\t  goodbye blue  sky  \n \n"
d = s.strip() # d == "goodbye blue  sky"

replace

Выполняет замену в строке

s = "goodbye blue sky"
d = s.replace("blue", "red") # d == "goodbye red sky"

encode и decode

Превращают str в bytes и обратно в заданной кодировке (по умолчанию utf8)

s = "привет мир"
d = s.encode("cp866")
# d == b'\xaf\xe0\xa8\xa2\xa5\xe2 \xac\xa8\xe0'
q = d.decode("cp866")
# q == "привет мир"

ljust и rjust

Догоняет строку заданным символом до нужной длинны.

s = "привет мир"
w = s.ljust(15,"_")
# w == 'привет мир_____'
q = s.rjust(15,"_")
# q == '_____привет мир'