Python Строки
Строки — наиболее часто используемый тип данных в Python. Мы можем создавать строки с помощью кавычек ('или"), чтобы создавать строки.
Создать строку просто: достаточно присвоить значение переменной. Например:
var1 = 'Hello World!' var2 = "Python Example"
Python Доступ к значениям в строках
Python не поддерживает тип отдельного символа; отдельный символ также используется как строка в Python.
Чтобы получить доступ к подстрокам в Python, можно использовать квадратные скобки для среза строк, как в следующем примере:
Пример (Python 2.0+)
Результат выполнения приведенного выше примера:
var1[0]: H var2[1:5]: ytho
Конкатенация строк Python
Мы можем создавать срезы строк и объединять их с другими строками, как в следующем примере:
Пример (Python 2.0+)
Результат выполнения приведённого выше примера
输出 :- Hello Example!
Управляющие символы Python
Когда вам нужно использовать специальные символы в строке, Python использует обратную косую черту (\управляющие символы. Таблица ниже:
| Управляющий символ | Описание |
|---|---|
| \(в конце строки) | Продолжение строки |
| \\ | Символ обратной косой черты |
| \' | Одинарная кавычка |
| \" | Двойная кавычка |
| \a | Звонок |
| \b | Возврат на один символ |
| \e | Escape |
| \000 | Пусто |
| \n | Перевод строки |
| \v | Вертикальная табуляция |
| \t | Горизонтальная табуляция |
| \r | Возврат каретки |
| \f | Подача страницы |
| \oyy | Восьмеричное число, y обозначает символ от 0~7, например: \012 обозначает перевод строки. |
| \xyy | Шестнадцатеричное число, начинается с \x, yy обозначает символ, например: \x0a обозначает новую строку |
| \other | Другие символы выводятся в обычном формате |
Операторы строк Python
В таблице ниже переменная экземпляра a имеет строковое значение "Hello", а переменная b — значение "Python":
| Operator | Описание | Экземпляр |
|---|---|---|
| + | Конкатенация строк |
>>>a + b
'HelloPython'
|
| * | Повторный вывод строки |
>>>a * 2
'HelloHello'
|
| [] | Получить символ в строке по индексу |
>>>a[1]
'e'
|
| [ : ] | Срез части строки |
>>>a[1:4]
'ell'
|
| in | Оператор принадлежности — возвращает True, если строка содержит заданный символ |
>>>"H" in a
True
|
| not in | Оператор принадлежности — возвращает True, если строка не содержит заданный символ |
>>>"M" not in a
True
|
| r/R | Raw string — необработанная строка: все строки используются непосредственно в соответствии с их буквальным значением, без экранирования специальных или непечатаемых символов. Кроме добавления буквы "r" (в верхнем или нижнем регистре) перед первой кавычкой строки, необработанные строки имеют почти точно такой же синтаксис, как и обычные строки. | >>>print r'\n'
\n
>>> print R'\n'
\n |
| % | Форматирование строки | См. следующий раздел |
Пример (Python 2.0+)
Результат выполнения вышеуказанной программы:
a + b 输出结果: HelloPython a * 2 输出结果: HelloHello a[1] 输出结果: e a[1:4] 输出结果: ell H 在变量 a 中 M 不在变量 a 中 \n \n
Форматирование строк в Python
Python поддерживает форматированный вывод строк. Хотя это может включать очень сложные выражения, самое базовое использование — вставить значение в строку с помощью символа форматирования строки %s.
В Python форматирование строк использует тот же синтаксис, что и функция sprintf в C.
Ниже приведён пример:
#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21)
Результат вывода приведённого выше примера:
My name is Zara and weight is 21 kg!
Символы форматирования строк в Python:
| Символ | Описание |
|---|---|
| %c | Форматировать символ и его ASCII-код |
| %s | Форматировать строку |
| %d | Форматировать целое число |
| %u | Форматировать беззнаковое целое число |
| %o | Форматировать беззнаковое восьмеричное число |
| %x | Форматировать беззнаковое шестнадцатеричное число |
| %X | Форматировать беззнаковое шестнадцатеричное число (в верхнем регистре) |
| %f | Форматирует число с плавающей запятой, можно указать точность после десятичной точки |
| %e | Форматирует число с плавающей запятой в экспоненциальной записи |
| %E | То же, что %e: форматирует число с плавающей запятой в экспоненциальной записи |
| %g | Сокращение для %f и %e |
| %G | Сокращение для %F и %E |
| %p | Форматирует адрес переменной в виде шестнадцатеричного числа |
Вспомогательные директивы оператора форматирования:
| Символ | Функция |
|---|---|
| * | Задают ширину или точность после десятичной точки |
| - | Используется для выравнивания по левому краю |
| + | Отображает знак плюс (+) перед положительными числами |
| <sp> | Отображает пробел перед положительными числами |
| # | Отображать '0' перед восьмеричными числами и '0x' или '0X' перед шестнадцатеричными числами (в зависимости от того, используется 'x' или 'X') |
| 0 | Дополнять выводимые числа символом '0' слева вместо пробелов по умолчанию |
| % | '%%' выводит один '%' |
| (var) | Сопоставление переменных (аргументы-словари) |
| m.n. | m — минимальная общая отображаемая ширина, n — количество цифр после десятичной точки (если доступно) |
Начиная с Python 2.6, была добавлена новая функция форматирования строкstr.format(), которая расширяет возможности форматирования строк.
Тройные кавычки в Python
В Python тройные кавычки можно использовать для присваивания сложных строк.
Тройные кавычки в Python позволяют строке занимать несколько строк. Строка может содержать символы новой строки, табуляции и другие специальные символы.
Синтаксис тройных кавычек — это пара идущих подряд одинарных или двойных кавычек (обычно используются парами).
>>> hi = '''hi there''' >>> hi # repr() 'hi\nthere' >>> print hi # str() hi there
Тройные кавычки избавляют программистов от трясины кавычек и специальных строк, сохраняя небольшой блок строки в так называемом формате WYSIWYG (What You See Is What You Get) от начала до конца.
Типичный вариант использования — когда вам нужен блок HTML или SQL; в этом случае следует использовать тройные кавычки для его обозначения, так как использование традиционной системы экранирующих символов было бы очень утомительным.
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
Строки Unicode
В Python определить строку Unicode так же просто, как и обычную строку:
>>> u'Hello World !' u'Hello World !'
Строчная буква "u" перед кавычками указывает, что здесь создаётся строка Unicode. Если вы хотите добавить специальный символ, можно использовать кодировку Unicode-Escape в Python. Как показано в следующем примере:
>>> u'Hello\u0020World !' u'Hello World !'
Заменяющая запись \u0020 указывает на вставку символа Unicode с кодовым значением 0x0020 (пробел) в указанной позиции.
Встроенные строковые функции Python
Строковые методы постепенно добавлялись с Python 1.6 до 2.0 — они также были добавлены в Jython.
Эти методы реализуют большинство методов в модуле string. В таблице ниже перечислены поддерживаемые в настоящее время встроенные строковые методы. Все методы включают поддержку Unicode, а некоторые даже специально предназначены для Unicode.
| Метод | Описание |
|---|---|
|
Переводит первый символ строки в верхний регистр |
|
|
Возвращает новую строку, в которой исходная строка центрирована и дополнена пробелами до длины width. |
|
|
Возвращает количество вхождений str в string; если указаны beg или end, возвращает количество вхождений str в указанном диапазоне |
|
|
Декодирует string с использованием кодировки, указанной в encoding; при возникновении ошибки по умолчанию вызывается исключение ValueError, если только для errors не указано 'ignore' или 'replace' |
|
|
Кодирует string с использованием кодировки, указанной в encoding; при возникновении ошибки по умолчанию вызывается исключение ValueError, если только для errors не указано 'ignore' или 'replace' |
|
|
Проверяет, заканчивается ли строка на obj. Если указаны beg или end, проверяет, заканчивается ли она на obj в указанном диапазоне. Если да, возвращает True; в противном случае возвращает False. |
|
|
Преобразует символы табуляции в строке в пробелы; по умолчанию количество пробелов для символа табуляции равно 8. |
|
|
Определяет, содержится ли str в string; если beg и end задают диапазон, проверяет, содержится ли str в указанном диапазоне; если да, возвращает значение начального индекса, в противном случае возвращает -1. |
|
|
Форматирование строки |
|
|
То же, что и метод find(), но вызывает исключение, если str отсутствует в string. |
|
|
Если string содержит хотя бы один символ и все символы являются буквами или цифрами, то вернуть True, иначе вернуть False. |
|
|
Если string содержит хотя бы один символ и все символы являются буквами, вернуть True, иначе вернуть False. |
|
|
Если string содержит только десятичные цифры, вернуть True; иначе вернуть False. |
|
|
Если строка содержит только цифры, возвращает True; в противном случае возвращает False. |
|
|
Если строка содержит хотя бы один регистрозависимый символ и все такие регистрозависимые символы строчные, возвращает True; в противном случае возвращает False. |
|
|
Если строка содержит только числовые символы, возвращает True; в противном случае возвращает False. |
|
|
Если строка содержит только пробельные символы, возвращает True; в противном случае возвращает False. |
|
|
Если строка записана в титульном регистре (см. title()), возвращает True; в противном случае возвращает False. |
|
|
Если строка содержит хотя бы один регистрозависимый символ и все такие регистрозависимые символы прописные, возвращает True; в противном случае возвращает False. |
|
|
Используя string в качестве разделителя, объединить все элементы (их строковые представления) в seq в новую строку. |
|
|
Вернуть новую строку, в которой исходная строка выровнена по левому краю и дополнена пробелами до длины width. |
|
|
Преобразовать все прописные символы в string в строчные. |
|
|
Удалить ведущие пробелы из string. |
|
|
Метод maketrans() используется для создания таблицы перевода для сопоставления символов. В простейшем способе вызова, принимающем два параметра, первый параметр — это строка, представляющая символы для преобразования, а второй параметр — также строка, представляющая цель преобразования. |
|
|
Вернуть дляstrнаибольшую букву в строке. |
|
|
Возвращает наименьшую букву в строкеstr. |
|
|
Несколько похоже на комбинацию find() и split(); начиная с первой позиции, где появляется str, разбивает строку на кортеж из 3 элементов (string_pre_str, str, string_post_str). Если str не содержится в string, то string_pre_str == string. |
|
|
Заменяет str1 в string на str2; если указано num, заменяет не более num раз. |
|
|
Похожа на функцию find(); возвращает позицию последнего вхождения строки или -1, если совпадений нет. |
|
|
Похожа на index(), но возвращает индекс последней совпавшей подстроки. |
|
|
Возвращает новую строку, в которой исходная строка выровнена по правому краю и дополнена пробелами до длины width. |
|
|
Аналогично функции partition(), но выполняет поиск справа. |
|
|
Удаляет завершающие пробелы из строки string. |
|
|
Используя str в качестве разделителя, разбивает string; если num имеет заданное значение, разбивает только наnum+1подстрок. |
|
|
Разбивает по строкам ('\r', '\r\n', '\n') и возвращает список, содержащий каждую строку как элемент. Если аргумент keepends равен False, символы новой строки не включаются; если True, символы новой строки сохраняются. |
|
|
Проверяет, начинается ли строка с obj; если да, возвращает True, иначе возвращает False. Если beg и end заданы, проверка выполняется в указанном диапазоне. |
|
|
Выполняет для string операции lstrip() и rstrip(). |
|
|
Поменять регистр символов в строке. |
|
|
Возвращает строку в формате заголовка, то есть все слова начинаются с заглавной буквы, а остальные буквы строчные (см. istitle()). |
|
|
Преобразовать символы строки согласно таблице, заданной str (содержащей 256 символов), поместить символы, которые нужно отфильтровать, в параметр del. |
|
|
Преобразовать строчные буквы в строке в заглавные. |
|
|
Возвращает строку длиной width, в которой исходная строка выровнена по правому краю и дополнена нулями слева. |