Строки (String)

До сих пор мы обсуждали числа как стандартные типы данных в Python. В этом разделе учебника мы рассмотрим самый популярный тип данных в Python - строку.

Строка в Python - это набор символов, окруженных одинарными, двойными или тройными кавычками. Компьютер не понимает символы; внутри он хранит управляемый символ как комбинацию 0 и 1.

Каждый символ кодируется в ASCII или Unicode. Поэтому можно сказать, что строки Python также называют коллекцией символов Unicode.

В Python строки можно создавать, заключая символ или последовательность символов в кавычки. Python позволяет нам использовать одинарные, двойные или тройные кавычки для создания строки.

Рассмотрим следующий пример на языке Python для создания строки.

str = "Hi Python !"

Если мы проверим тип переменной str с помощью сценария Python print(type(str)), то будет выведено:

<class 'str'>

В Python строки рассматриваются как последовательность символов, что означает, что Python не поддерживает символьный тип данных; вместо этого один символ, записанный как p, рассматривается как строка длины 1.

Создание строки в Python

Мы можем создать строку, заключив символы в одинарные или двойные кавычки. Python также предоставляет тройные кавычки для представления строки, но они обычно используются для многострочных строк или документов.

#Using single quotes  
str1 = 'Hello Python'  
print(str1)  
#Using double quotes  
str2 = "Hello Python"  
print(str2)  
  
#Using triple quotes  
str3 = '''''Triple quotes are generally used for  
    represent the multiline or 
    docstring'''   
print(str3)  

Вывод:

Hello Python
Hello Python
Triple quotes are generally used for 
    represent the multiline or
    docstring

Индексация и разбиение строк в Python

Как и в других языках, индексация строк в Python начинается с 0. Например, строка "HELLO" индексируется так, как показано на рисунке ниже.

Индексация и разбиение строк в Python

Рассмотрим следующий пример:

str = "HELLO"  
print(str[0])  
print(str[1])  
print(str[2])  
print(str[3])  
print(str[4])  
# It returns the IndexError because 6th index doesn't exist  
print(str[6])  

Вывод:

H
E
L
L
O
IndexError: string index out of range

В Python мы можем использовать оператор : (двоеточие) для доступа к подстроке из заданной строки. Рассмотрим следующий пример.

доступ к подстроке из заданной строки в Python

Здесь мы должны заметить, что верхний диапазон, заданный в операторе slice, всегда является эксклюзивным, т.е. если задано str = 'HELLO', то str[1:3] всегда будет включать str[1] = 'E', str[2] = 'L' и ничего больше.

Рассмотрим следующий пример:

# Given String  
str = "JAVATPOINT"  
# Start Oth index to end  
print(str[0:])  
# Starts 1th index to 4th index  
print(str[1:5])  
# Starts 2nd index to 3rd index  
print(str[2:4])  
# Starts 0th to 2nd index  
print(str[:3])  
#Starts 4th to 6th index  
print(str[4:7])  

Вывод:

JAVATPOINT
AVAT
VA
JAV
TPO

Мы можем сделать отрицательную нарезку в строке; она начинается с самого правого символа, который обозначается как -1. Второй крайний правый индекс обозначает -2, и так далее. Рассмотрим следующее изображение.

отрицательный slice в строке python

Рассмотрим следующий пример

str = 'JAVATPOINT'  
print(str[-1])  
print(str[-3])  
print(str[-2:])  
print(str[-4:-1])  
print(str[-7:-2])  
# Reversing the given string  
print(str[::-1])  
print(str[-12])  

Вывод:

T
I
NT
OIN
ATPOI
TNIOPTAVAJ
IndexError: string index out of range

Переназначение строк

Обновить содержимое строки так же просто, как присвоить его новой строке. Объект string не поддерживает присваивание элементов, т.е. строка может быть заменена только новой строкой, поскольку ее содержимое не может быть частично заменено. В Python строки неизменяемы.

Рассмотрим следующий пример.

Пример 1

str = "HELLO"    
str[0] = "h"    
print(str)    

Вывод:

Traceback (most recent call last):
  File "12.py", line 2, in <module>
    str[0] = "h";
TypeError: 'str' object does not support item assignment

Однако в примере 1 строка str может быть полностью присвоена новому содержимому, как указано в следующем примере.

Пример 2

str = "HELLO"    
print(str)    
str = "hello"    
print(str)    

Вывод:

HELLO
hello  

Удаление строки в Python

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

Пробуем удалить часть строки:

str = "JAVATPOINT"  
del str[1]  

Вывод:

TypeError: 'str' object doesn't support item deletion

Теперь мы пробуем удалить всю строку:

str1 = "JAVATPOINT"  
del str1  
print(str1)  

Вывод:

NameError: name 'str1' is not defined

Строковые операторы в Python

Оператор Описание
+ Ооператор конкатенации, используемый для соединения строк, заданных по обе стороны от оператора.
* Оператор повторения. Он объединяет несколько копий одной и той же строки.
[] Оператор среза. Он используется для доступа к подстрокам определенной строки.
[:] Оператор среза диапазона. Он используется для доступа к символам из указанного диапазона.
in Оператор членства. Он возвращает, присутствует ли определенная подстрока в указанной строке.
not in Оператором членства и выполняет прямо противоположное действие по отношению к in. Он возвращает true, если определенная подстрока отсутствует в указанной строке.
r/R Используется для указания необработанной строки. Необработанные строки используются в тех случаях, когда необходимо вывести фактическое значение управляющих символов, таких как C://python. Чтобы определить любую строку как необработанную, за строкой следует символ r или R.
% Он используется для форматирования строк. Он использует спецификаторы формата, применяемые в программировании на языке C, такие как %d или %f, для отображения их значений в python.

Рассмотрим следующий пример, чтобы понять использование операторов Python.

str = "Hello"     
str1 = " world"    
print(str*3) # prints HelloHelloHello    
print(str+str1)# prints Hello world     
print(str[4]) # prints o                
print(str[2:4]); # prints ll                    
print('w' in str) # prints false as w is not present in str    
print('wo' not in str1) # prints false as wo is present in str1.     
print(r'C://python37') # prints C://python37 as it is written    
print("The string str : %s"%(str)) # prints The string str : Hello     

Вывод:

HelloHelloHello
Hello world
o
ll
False
False
C://python37
The string str : Hello

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

Экранирование последовательности

Допустим, нам нужно записать текст в виде - They said, "Hello what's going on?"- данное утверждение может быть записано в одинарных или двойных кавычках, но оно вызовет SyntaxError, так как содержит как одинарные, так и двойные кавычки.

Рассмотрим следующий пример, чтобы понять реальное использование операторов Python.

str = "They said, "Hello what's going on?""  
print(str)  

Вывод:

SyntaxError: invalid syntax

Мы можем использовать тройные кавычки для решения этой задачи, но Python предоставляет возможность экранировать нашу последовательнсть символов.

Символ обратной косой черты (/) обозначает escape последовательность. За обратной косой чертой может следовать специальный символ, который интерпретируется по-разному. Одинарные кавычки внутри строки должны быть экранированы. Мы можем применить то же самое, что и в случае с двойными кавычками.

# using triple quotes  
print('''''They said, "What's there?"''')  
  
# escaping single quotes  
print('They said, "What\'s going on?"')  
  
# escaping double quotes  
print("They said, \"What's going on?\"")  

Вывод:

They said, "What's there?"
They said, "What's going on?"
They said, "What's going on?"

Ниже приведен список управляющих последовательностей для экранирования:

Escape последовательность Описание
\newline Игнорирует новую строку.
\\ Обратный слэш
\' Одинарные кавычки
\\'' Двойные кавычки
\a ASCII гудок
\b ASCII Backspace(BS)
\f ASCII Formfeed (смещение к началу след. страницы)
\n ASCII Linefeed (перевод на след. строку)
\r ASCII Carriege Return(CR) (перемещение курсора к левому краю поля)
\t ASCII горизонтальная табуляция
\v ASCII вертикальная табуляция
\ooo Символ с восьмеричным значением
\xHH Символ с шестнадцатеричным значением.

Вот простой пример использования escape-последовательности.

print("C:\\Users\\DEVANSH SHARMA\\Python32\\Lib")  
print("This is the \n multiline quotes")  
print("This is \x48\x45\x58 representation")  

Вывод:

C:\Users\DEVANSH SHARMA\Python32\Lib
This is the 
 multiline quotes
This is HEX representation

Мы можем игнорировать управляющую последовательность из заданной строки, используя необработанную строку. Для этого перед строкой нужно написать r или R. Рассмотрим следующий пример.

print(r"C:\\Users\\DEVANSH SHARMA\\Python32")  

Вывод:

C:\\Users\\DEVANSH SHARMA\\Python32

Метод format() в python

Метод format() является наиболее гибким и полезным методом форматирования строк. Фигурные скобки {} используются в качестве заполнителя строки и заменяются аргументом метода format(). Рассмотрим приведенный пример:

# Using Curly braces  
print("{} and {} both are the best friend".format("Devansh","Abhishek"))  
  
#Positional Argument  
print("{1} and {0} best players ".format("Virat","Rohit"))  
  
#Keyword Argument  
print("{a},{b},{c}".format(a = "James", b = "Peter", c = "Ricky"))  

Вывод:

Devansh and Abhishek both are the best friend
Rohit and Virat best players 
James,Peter,Ricky 

Форматирование строк в Python с помощью оператора %

Python позволяет нам использовать спецификаторы формата, используемые в операторе printf языка Си. Спецификаторы формата в Python обрабатываются так же, как и в C. Однако Python предоставляет дополнительный оператор %, который используется в качестве интерфейса между спецификаторами формата и их значениями. Другими словами, можно сказать, что он связывает спецификаторы формата со значениями.

Рассмотрим следующий пример.

Integer = 10;    
Float = 1.290    
String = "Devansh"    
print("Hi I am Integer ... My value is %d\nHi I am float ... My value is %f\nHi I am string ... My value is %s"%(Integer,Float,String))    

Вывод:

Hi I am Integer ... My value is 10
Hi I am float ... My value is 1.290000
Hi I am string ... My value is Devansh

Строковые функции в Python

Python предоставляет различные встроенные функции, которые используются для работы со строками.

Метод Описание
capitalize() Выводит первый символ строки заглавными буквами. Эта функция устарела в python3
casefold() Возвращает версию строки, пригодную для сравнений без регистра.
center(width ,fillchar) Возвращает строку, заполненную пробелами, причем исходная строка центрируется с равным количеством пробелов слева и справа.
count(string,begin,end) Подсчитывает количество вхождений подстроки в строку между начальным и конечным индексом.
decode(encoding = 'UTF8', errors = 'strict') Декодирует строку.
encode() Кодирование строки. Кодировка по умолчанию - utf-8.
endswith(suffix ,begin=0,end=len(string)) Возвращает булево значение, если строка заканчивается заданным суффиксом между begin и end.
expandtabs(tabsize = 8) Определяет табуляцию в строке до нескольких пробелов. По умолчанию количество пробела равно 8.
find(substring ,beginIndex, endIndex) Возвращает значение индекса строки, в которой найдена подстрока между начальным и конечным индексами.
format(value) Возвращает форматированную версию строки, используя переданное значение.
index(subsring, beginIndex, endIndex) Выбрасывает исключение, если строка не найдена. Работает так же, как и метод find().
isalnum() Возвращает true, если символы в строке являются буквенно-цифровыми, т.е. алфавитами или цифрами, и в ней есть хотя бы один символ. В противном случае возвращается false.
isalpha() Возвращает true, если все символы являются алфавитными и есть хотя бы один символ, иначе False.
isdecimal() Возвращает true, если все символы строки являются десятичными.
isdigit() Возвращает true, если все символы являются цифрами и есть хотя бы один символ, иначе False.
isidentifier() Возвращает true, если строка является действительным идентификатором.
islower() Возвращает true, если символы строки находятся в нижнем регистре, иначе false.
isnumeric() Возвращает true, если строка содержит только числовые символы.
isprintable() Возвращает true, если все символы строки являются печатными или строка пустая, в противном случае возвращает false.
isupper() Возвращает true, если символы строки находятся в верхнем регистре, иначе False.
isspace() Возвращает true, если символы строки являются пробелами, иначе false.
istitle() Возвращает true, если строка имеет правильный заголовок, и false в противном случае. Заголовок строки - это строка, в которой первый символ в верхнем регистре, а остальные символы в нижнем регистре.
join(seq) Он объединяет строковое представление заданной последовательности.
len(string) Возвращает длину строки.
ljust(width[,fillchar]) Возвращает строки, заполненные пробелами, с исходной строкой, выровненной по левому краю до заданной ширины.
lower() Он преобразует все символы строки в нижний регистр.
lstrip() Удаляет все пробелы в строке, а также может быть использован для удаления определенного символа из строки.
partition() Он ищет разделитель sep в строке и возвращает часть перед ним, сам разделитель и часть после него. Если разделитель не найден, возвращается кортеж в виде переданной строка и двух пустых строк.
maketrans() Возвращает таблицу перевода для использования в функции translate.
replace(old,new[,count]) Заменяет старую последовательность символов на новую. Если задано значение max, то заменяются все вхождения.
rfind(str,beg=0,end=len(str)) Похож на find, но обходит строку в обратном направлении.
rindex(str,beg=0,end=len(str)) Это то же самое, что и index, но обходит строку в обратном направлении.
rjust(width,[,fillchar]) Возвращает строку с пробелами, исходная строка которой выровнена по правому краю на указанное количество символов.
rstrip() Он удаляет все пробелы в строке, а также может быть использован для удаления определенного символа.
rsplit(sep=None, maxsplit = -1) Он аналогичен функции split(), но обрабатывает строку в обратном направлении. Возвращает список слов в строке. Если разделитель не указан, то строка разделяется в соответствии с пробелами.
split(str,num=string.count(str)) Разделяет строку в соответствии с разделителем str. Строка разделяется по пробелу, если разделитель не указан. Возвращает список подстрок, скомпонованных с разделителем.
splitlines(num=string.count('\n')) Он возвращает список строк в каждой строке с удаленной строкой.
startswith(str,beg=0,end=len(str)) Возвращает булево значение, если строка начинается с заданной строки между begin и end.
strip([chars]) Он используется для выполнения функций lstrip() и rstrip() над строкой.
swapcase() Он инвертирует регистр всех символов в строке.
title() Он используется для преобразования строки в заглавный регистр, т.е. строка meEruT будет преобразована в Meerut.
translate(table,deletechars = '') Он переводит строку в соответствии с таблицей перевода, переданной в функцию .
upper() Он преобразует все символы строки в верхний регистр.
zfill(width) Возвращает исходную строку, дополненную нулями минимального количества символов (параметр width); предназначена для чисел, zfill() сохраняет любой заданный знак (за вычетом одного нуля).
rpartition() Ищет последнее вхождение указанной строки и разбивает строку на кортеж, содержащий три элемента (часть перед указанной строкой, саму строку и часть после нее).

ключевое слово pass

список (list)