Python Строки

Строки — наиболее часто используемый тип данных в Python. Мы можем создавать строки с помощью кавычек ('или"), чтобы создавать строки.

Создать строку просто: достаточно присвоить значение переменной. Например:

var1 = 'Hello World!'
var2 = "Python Example"

Python Доступ к значениям в строках

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

Чтобы получить доступ к подстрокам в Python, можно использовать квадратные скобки для среза строк, как в следующем примере:

Пример (Python 2.0+)

#!/usr/bin/python var1 = 'Hello World!' var2 = "Пример Python" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]

Результат выполнения приведенного выше примера:

var1[0]:  H
var2[1:5]:  ytho

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

Мы можем создавать срезы строк и объединять их с другими строками, как в следующем примере:

Пример (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- var1 = 'Hello World!' print "Output :-", var1[:6] + 'Example!'

Результат выполнения приведённого выше примера

输出 :-  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/RRaw string — необработанная строка: все строки используются непосредственно в соответствии с их буквальным значением, без экранирования специальных или непечатаемых символов. Кроме добавления буквы "r" (в верхнем или нижнем регистре) перед первой кавычкой строки, необработанные строки имеют почти точно такой же синтаксис, как и обычные строки.
>>>print r'\n' \n >>> print R'\n' \n
%Форматирование строкиСм. следующий раздел

Пример (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = "Hello" b = "Python" print "a + b выводит:", a + b print "a * 2 выводит:", a * 2 print "a", a[1] print "a[1:4] выводит:", a[1:4] if( "H" in a) : print "H содержится в переменной a" else : print "H не содержится в переменной a" if( "M" not in a) : print "M не содержится в переменной a" else : print "M содержится в переменной a" print r'\n' print R'\n'

Результат выполнения вышеуказанной программы:

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.

Метод Описание

string.capitalize()

Переводит первый символ строки в верхний регистр

string.center(width)

Возвращает новую строку, в которой исходная строка центрирована и дополнена пробелами до длины width.

string.count(str, beg=0, end=len(string))

Возвращает количество вхождений str в string; если указаны beg или end, возвращает количество вхождений str в указанном диапазоне

string.decode(encoding='UTF-8', errors='strict')

Декодирует string с использованием кодировки, указанной в encoding; при возникновении ошибки по умолчанию вызывается исключение ValueError, если только для errors не указано 'ignore' или 'replace'

string.encode(encoding='UTF-8', errors='strict')

Кодирует string с использованием кодировки, указанной в encoding; при возникновении ошибки по умолчанию вызывается исключение ValueError, если только для errors не указано 'ignore' или 'replace'

string.endswith(obj, beg=0, end=len(string))

Проверяет, заканчивается ли строка на obj. Если указаны beg или end, проверяет, заканчивается ли она на obj в указанном диапазоне. Если да, возвращает True; в противном случае возвращает False.

string.expandtabs(tabsize=8)

Преобразует символы табуляции в строке в пробелы; по умолчанию количество пробелов для символа табуляции равно 8.

string.find(str, beg=0, end=len(string))

Определяет, содержится ли str в string; если beg и end задают диапазон, проверяет, содержится ли str в указанном диапазоне; если да, возвращает значение начального индекса, в противном случае возвращает -1.

string.format()

Форматирование строки

string.index(str, beg=0, end=len(string))

То же, что и метод find(), но вызывает исключение, если str отсутствует в string.

string.isalnum()

Если string содержит хотя бы один символ и все символы являются буквами или цифрами, то вернуть

True, иначе вернуть False.

string.isalpha()

Если string содержит хотя бы один символ и все символы являются буквами, вернуть True,

иначе вернуть False.

string.isdecimal()

Если string содержит только десятичные цифры, вернуть True; иначе вернуть False.

string.isdigit()

Если строка содержит только цифры, возвращает True; в противном случае возвращает False.

string.islower()

Если строка содержит хотя бы один регистрозависимый символ и все такие регистрозависимые символы строчные, возвращает True; в противном случае возвращает False.

string.isnumeric()

Если строка содержит только числовые символы, возвращает True; в противном случае возвращает False.

string.isspace()

Если строка содержит только пробельные символы, возвращает True; в противном случае возвращает False.

string.istitle()

Если строка записана в титульном регистре (см. title()), возвращает True; в противном случае возвращает False.

string.isupper()

Если строка содержит хотя бы один регистрозависимый символ и все такие регистрозависимые символы прописные, возвращает True; в противном случае возвращает False.

string.join(seq)

Используя string в качестве разделителя, объединить все элементы (их строковые представления) в seq в новую строку.

string.ljust(width)

Вернуть новую строку, в которой исходная строка выровнена по левому краю и дополнена пробелами до длины width.

string.lower()

Преобразовать все прописные символы в string в строчные.

string.lstrip()

Удалить ведущие пробелы из string.

string.maketrans(intab, outtab)

Метод maketrans() используется для создания таблицы перевода для сопоставления символов. В простейшем способе вызова, принимающем два параметра, первый параметр — это строка, представляющая символы для преобразования, а второй параметр — также строка, представляющая цель преобразования.

max(str)

Вернуть дляstrнаибольшую букву в строке.

min(str)

Возвращает наименьшую букву в строкеstr.

string.partition(str)

Несколько похоже на комбинацию find() и split(); начиная с первой позиции, где появляется str, разбивает строку на кортеж из 3 элементов (string_pre_str, str, string_post_str). Если str не содержится в string, то string_pre_str == string.

string.replace(str1, str2, num=string.count(str1))

Заменяет str1 в string на str2; если указано num, заменяет не более num раз.

string.rfind(str, beg=0,end=len(string) )

Похожа на функцию find(); возвращает позицию последнего вхождения строки или -1, если совпадений нет.

string.rindex( str, beg=0,end=len(string))

Похожа на index(), но возвращает индекс последней совпавшей подстроки.

string.rjust(width)

Возвращает новую строку, в которой исходная строка выровнена по правому краю и дополнена пробелами до длины width.

string.rpartition(str)

Аналогично функции partition(), но выполняет поиск справа.

string.rstrip()

Удаляет завершающие пробелы из строки string.

string.split(str="", num=string.count(str))

Используя str в качестве разделителя, разбивает string; если num имеет заданное значение, разбивает только наnum+1подстрок.

string.splitlines([keepends])

Разбивает по строкам ('\r', '\r\n', '\n') и возвращает список, содержащий каждую строку как элемент. Если аргумент keepends равен False, символы новой строки не включаются; если True, символы новой строки сохраняются.

string.startswith(obj, beg=0,end=len(string))

Проверяет, начинается ли строка с obj; если да, возвращает True, иначе возвращает False. Если beg и end заданы, проверка выполняется в указанном диапазоне.

string.strip([obj])

Выполняет для string операции lstrip() и rstrip().

string.swapcase()

Поменять регистр символов в строке.

string.title()

Возвращает строку в формате заголовка, то есть все слова начинаются с заглавной буквы, а остальные буквы строчные (см. istitle()).

string.translate(str, del="")

Преобразовать символы строки согласно таблице, заданной str (содержащей 256 символов),

поместить символы, которые нужно отфильтровать, в параметр del.

string.upper()

Преобразовать строчные буквы в строке в заглавные.

string.zfill(width)

Возвращает строку длиной width, в которой исходная строка выровнена по правому краю и дополнена нулями слева.

Другие расширения