Строковые типы

В Python существует 2 встроенных строковых типа:

  • str
  • bytes
Тип str хранит последовательность символов Unicode.

Тип bytes хранит последовательность байтов (или ASCII символов).

Типы str и bytes могут быть преобразованы друг в друга с помощью методов encode и decode соответственно. Результат преобразования зависит от кодировки, по умолчанию используется кодировка UTF-8.
s = 'тест'
b = b'test'
print(s)
print(b)
print(s.encode())
print(s.encode('utf-16'))
print(b'\xd1\x82\xd0\xb5\xd1\x81\xd1\x82'.decode())
print(b'\xff\xfeB\x045\x04A\x04B\x04'.decode('utf-16'))
Литералы строк В коде строки задаются в одинарных или двойных кавычках. Для создания многострочных строк используются тройные одинарные или двойные кавычки.
a = 'this is string'
b = "this is string too"
c = '''this
is
multiline
string'''
d = """and
this"""
print(a)
print(b)
print(c)
print(d)
Если две или больше строки в кавычках указаны друг за другом, то они автоматически склеиваются:
s = 'one' 'two' 'three'
print(s)
Чтобы использовать знак кавычки внутри строки, нужно его экранировать символом обратного слеша:
a = 'текст \'в кавычках\''
b = "текст \"в кавычках\""
print(a)
print(b)
В многострочных строках кавычки экранировать не нужно.

Обратный слеш также используется для ввода специальных символов: перевода строки, табуляции и т.д., а также для подстановки символа по его коду:

Подробнее: https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
a = '\tтекст'
b = 'на\nнесколько\nстрок'
print(a)
print(b)
Для того, чтобы игнорировать специальные символы, используются сырые (raw) литералы строк:
s = r'\t сырая \n строка'
print(s)
Операции со сроками Для строк доступны некоторые "математические" операции:

  • оператор + выполняет конкатенацию (склеивание) двух строк
  • оператор * повторяет строку указанное число раз
a = 'test'
b = 'text'
print(a + b)
print(a * 3)
Строки ведут себя так же, как и другие коллекции:

  • Можно узнать длину строки
  • Можно обращаться к символам по индексу и испольщовать срезы
  • Можно итерироваться по строкам циклом for
s = 'test'
print(len(s))
print(s[0])
print(s[1:3])
for c in s:
    print(c)