Строки Python
Строки Python
В этом уроке вы научитесь создавать, форматировать, изменять и удалять строки в Python. Кроме того, вы познакомитесь с различными строковыми операциями и функциями.
Видео:Строки Python
Что такое строка в Python?
Строка — это последовательность символов.
Персонаж — это просто символ. Например, в английском языке 26 символов.
Компьютеры не имеют дело с символами, они имеют дело с числами (двоичными). Несмотря на то, что вы можете видеть символы на экране, внутри они хранятся и обрабатываются как комбинация нулей и единиц.
Это преобразование символа в число называется кодированием, а обратный процесс — декодированием. ASCII и Unicode — одни из самых популярных кодировок.
В Python строка представляет собой последовательность символов Unicode. Юникод был введен, чтобы включить каждый символ на всех языках и обеспечить единообразие кодирования. Вы можете узнать о Unicode из Python Unicode.
<час>Как создать строку в Python?
Строки можно создавать, заключая символы в одинарные или двойные кавычки. В Python можно использовать даже тройные кавычки, но обычно они используются для представления многострочных строк и строк документации.
# defining strings in Python
# all of the following are equivalent
my_string = 'Hello'
print(my_string)
my_string = "Hello"
print(my_string)
my_string = '''Hello'''
print(my_string)
# triple quotes string can extend multiple lines
my_string = """Hello, welcome to
the world of Python"""
print(my_string)
Когда вы запустите программу, вывод будет:
Hello Hello Hello Hello, welcome to the world of Python<час>
Как получить доступ к символам в строке?
Мы можем получить доступ к отдельным символам, используя индексацию, и ряду символов, используя нарезку. Индекс начинается с 0. Попытка доступа к символу вне диапазона индекса вызовет IndexError
. Индекс должен быть целым числом. Мы не можем использовать числа с плавающей запятой или другие типы, это приведет к TypeError
.
Python допускает отрицательное индексирование своих последовательностей.
Индекс -1
относится к последнему элементу, -2
к предпоследнему элементу и так далее. Мы можем получить доступ к ряду элементов в строке, используя оператор среза :
(двоеточие).
#Accessing string characters in Python
str = 'programiz'
print('str = ', str)
#first character
print('str[0] = ', str[0])
#last character
print('str[-1] = ', str[-1])
#slicing 2nd to 5th character
print('str[1:5] = ', str[1:5])
#slicing 6th to 2nd last character
print('str[5:-2] = ', str[5:-2])
Когда мы запускаем указанную выше программу, мы получаем следующий вывод:
str = programiz str[0] = p str[-1] = z str[1:5] = rogr str[5:-2] = am
Если мы попытаемся получить доступ к индексу вне диапазона или использовать числа, отличные от целых, мы получим ошибки.
# index must be in range
>>> my_string[15]
...
IndexError: string index out of range
# index must be an integer
>>> my_string[1.5]
...
TypeError: string indices must be integers
Нарезку лучше всего визуализировать, если считать, что индекс находится между элементами, как показано ниже.
Если мы хотим получить доступ к диапазону, нам нужен индекс, который будет нарезать часть строки.
<рисунок> <час>Как изменить или удалить строку?
Строки неизменяемы. Это означает, что элементы строки не могут быть изменены после того, как они были назначены. Мы можем просто переназначить разные строки одному и тому же имени.
>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'
Мы не можем удалять или удалять символы из строки. Но полное удаление строки возможно с помощью del
ключевое слово.
>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined
<час> Операции со строками Python
Со строками можно выполнять множество операций, что делает их одним из наиболее часто используемых типов данных в Python.
Чтобы узнать больше о типах данных, доступных в Python, посетите:Типы данных Python
Конкатенация двух или более строк
Объединение двух или более строк в одну называется конкатенацией.
+ оператор делает это в Python. Простое написание двух строковых литералов вместе также объединяет их.
* Оператор может использоваться для повторения строки заданное количество раз.
# Python String Operations
str1 = 'Hello'
str2 ='World!'
# using +
print('str1 + str2 = ', str1 + str2)
# using *
print('str1 * 3 =', str1 * 3)
Когда мы запускаем указанную выше программу, мы получаем следующий вывод:
str1 + str2 = HelloWorld! str1 * 3 = HelloHelloHello
Запись двух строковых литералов вместе также объединяет их, как + оператор.
Если мы хотим объединить строки в разных строках, мы можем использовать круглые скобки.
>>> # two string literals together
>>> 'Hello ''World!'
'Hello World!'
>>> # using parentheses
>>> s = ('Hello '
... 'World')
>>> s
'Hello World'
<час> Итерация строки
Мы можем перебирать строку, используя цикл for. Вот пример подсчета количества 'l в строке.
# Iterating through a string
count = 0
for letter in 'Hello World':
if(letter == 'l'):
count += 1
print(count,'letters found')
Когда мы запускаем указанную выше программу, мы получаем следующий вывод:
3 letters found<час>
Тест на принадлежность к строке
Мы можем проверить, существует ли подстрока в строке или нет, используя ключевое слово in
.
>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False
<час> Встроенные функции для работы с Python
Различные встроенные функции, работающие с последовательностями, также работают со строками.
Некоторые из наиболее часто используемых:enumerate()
и len()
. enumerate()
функция возвращает перечисляемый объект. Он содержит индекс и значение всех элементов в строке в виде пар. Это может быть полезно для итерации.
Точно так же len()
возвращает длину (количество символов) строки.
str = 'cold'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str) = ', list_enumerate)
#character count
print('len(str) = ', len(str))
Когда мы запускаем указанную выше программу, мы получаем следующий вывод:
list(enumerate(str) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')] len(str) = 4<час>
Форматирование строк Python
Экран-последовательность
Если мы хотим напечатать текст типа
Он сказал:«Что там?»
, мы не можем использовать ни одинарные, ни двойные кавычки. Это приведет к SyntaxError
поскольку сам текст содержит как одинарные, так и двойные кавычки.
>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax
Один из способов обойти эту проблему — использовать тройные кавычки. В качестве альтернативы мы можем использовать escape-последовательности.
Управляющая последовательность начинается с обратной косой черты и интерпретируется по-разному. Если мы используем одинарную кавычку для представления строки, все одинарные кавычки внутри строки должны быть экранированы. То же самое и с двойными кавычками. Вот как это можно сделать для представления приведенного выше текста.
# using triple quotes
print('''He said, "What's there?"''')
# escaping single quotes
print('He said, "What\'s there?"')
# escaping double quotes
print("He said, \"What's there?\"")
Когда мы запускаем указанную выше программу, мы получаем следующий вывод:
He said, "What's there?" He said, "What's there?" He said, "What's there?"
Вот список всех escape-последовательностей, поддерживаемых Python.
Escape-последовательность | Описание |
---|---|
\новая строка | Обратная косая черта и новая строка игнорируются |
\\ | Обратная косая черта |
\' | Одинарная кавычка |
\" | Двойная кавычка |
\a | Колокольчик ASCII |
\b | Забой ASCII |
\f | Перевод страницы в формате ASCII |
\n | Перевод строки в формате ASCII |
\r | Возврат каретки ASCII |
\t | Горизонтальная вкладка ASCII |
\v | Вертикальная вкладка ASCII |
\ооо | Символ с восьмеричным значением ooo |
\xHH | Символ с шестнадцатеричным значением HH |
Вот несколько примеров
>>> print("C:\\Python32\\Lib")
C:\Python32\Lib
>>> print("This is printed\nin two lines")
This is printed
in two lines
>>> print("This is \x48\x45\x58 representation")
This is HEX representation
<час> Необработанная строка для игнорирования управляющей последовательности
Иногда мы можем захотеть игнорировать управляющие последовательности внутри строки. Для этого мы можем разместить r
или R
перед строкой. Это будет означать, что это необработанная строка, и любая escape-последовательность внутри нее будет проигнорирована.
>>> print("This is \x61 \ngood example")
This is a
good example
>>> print(r"This is \x61 \ngood example")
This is \x61 \ngood example
<час> Метод format() для форматирования строк
format()
Метод, доступный для объекта string, очень универсален и эффективен при форматировании строк. Строки формата содержат фигурные скобки {}
в качестве заполнителей или замещающих полей, которые заменяются.
Мы можем использовать позиционные аргументы или аргументы ключевого слова, чтобы указать порядок.
# Python string format() method
# default(implicit) order
default_order = "{}, {} and {}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print(default_order)
# order using positional argument
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print('\n--- Positional Order ---')
print(positional_order)
# order using keyword argument
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print('\n--- Keyword Order ---')
print(keyword_order)
Когда мы запускаем указанную выше программу, мы получаем следующий вывод:
--- Default Order --- John, Bill and Sean --- Positional Order --- Bill, John and Sean --- Keyword Order --- Sean, Bill and John
format()
метод может иметь необязательные спецификации формата. Они отделяются от имени поля двоеточием. Например, мы можем выровнять по левому краю <
, выровняйте по правому краю >
или по центру ^
строка в заданном пространстве.
Мы также можем форматировать целые числа как двоичные, шестнадцатеричные и т. д., а числа с плавающей запятой можно округлять или отображать в формате экспоненты. Есть множество форматов, которые вы можете использовать. Посетите здесь для всех форматирования строк, доступных с format()
метод.
>>> # formatting integers
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'
>>> # formatting floats
>>> "Exponent representation: {0:e}".format(1566.345)
'Exponent representation: 1.566345e+03'
>>> # round off
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'
>>> # string alignment
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter | bread | ham|'
<час> Форматирование в старом стиле
Мы даже можем форматировать строки, как старый sprintf()
. стиль, используемый в языке программирования C. Мы используем %
для этого.
>>> x = 12.3456789
>>> print('The value of x is %3.2f' %x)
The value of x is 12.35
>>> print('The value of x is %3.4f' %x)
The value of x is 12.3457
<час> Распространенные строковые методы Python
Существует множество методов, доступных со строковым объектом. format()
метод, который мы упоминали выше, является одним из них. Некоторые из часто используемых методов:lower()
, upper()
, join()
, split()
, find()
, replace()
и т.д. Вот полный список всех встроенных методов для работы со строками в Python.
>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "This will split all words into a list".split()
['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list']
>>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string'])
'This will join all words into a string'
>>> 'Happy New Year'.find('ew')
7
>>> 'Happy New Year'.replace('Happy','Brilliant')
'Brilliant New Year'
Python
- C# Строка
- Словарь Питона
- Java-строки
- Строки перечисления Java
- Строки Python:заменить, объединить, разделить, перевернуть, прописные и строчные буквы
- Функция Python String strip() с ПРИМЕРОМ
- Количество строк Python() с ПРИМЕРАМИ
- Python String format() Объясните с ПРИМЕРАМИ
- Длина строки Python | Пример метода len()
- Метод Python String find() с примерами