Python __str__() and __repr__() functions
Содержание:
- Python String Functions
- Python Tutorial
- Using quotes in Python
- Пример: разделение строки по классу
- Как извлечь подпоследовательность из строки?
- Задания для самоподготовки
- Python basic string operations
- Строки нарезки в Python – примеры
- Вводная информация о строках
- Escape Characters
- Основные строковые функции
- Форматирование строк
- Произвольные выражения
Python String Functions
The list of String Functions in Python Programming language
Python String Functions | Description |
---|---|
capitalize() | This string function converts the first character to Capitalize and following characters to Lowercase. |
casefold() | It returns the given string in Lowercase. |
center() | This method is to Justify the string to Center and fill the remaining width with default white spaces |
count() | This python string function Counts, How many times the string occurs. |
encode() | Returns the encoded version of a string object |
endswith() | Returns TRUE if the string ends with the specified substring |
expandtabs() | It returns a copy of the given string, where all the tab characters replaced with one or more spaces. |
find() | It returns the index position of the first occurrence of a specified string. It return -1 if the specified string not found |
format() | Useful to format the string |
format_map() | Format the string |
index() | It returns the index position of the first occurrence of a specified string. It raises ValueError if the specified string not found. |
isalnum() | This python string function returns TRUE if the string contains letters and numbers |
isalpha() | Returns TRUE if the string has at least one letter, and all the letters are Alphabetic |
isdecimal() | This method returns TRUE if the string has at least one letter, and all the letters are Decimal |
isdigit() | This python string function returns TRUE if the string has at least one letter, and all the letters are Digits |
isidentifier() | Returns TRUE if the string is a valid identifier |
islower() | Returns TRUE if the string has at least one letter, and all the letters are in Lowercase |
isnumeric() | It returns TRUE if the string has at least one letter, and all the letters are Numeric |
isprintable() | This python string function returns TRUE if all the letters are Printable |
isspace() | It returns TRUE if the string contains only white spaces |
istitle() | Returns TRUE if the string has at least one letter, and it is a Title. |
isupper() | This python string function returns TRUE if the string has at least one letter, and all the letters are in Uppercase |
join() | Join (Concatenate) a list of strings |
ljust() | Justify the string to the Left-hand side and fill the remaining width with default white spaces |
lower() | It converts the given String into Lowercase letters and returns a new string. |
lstrip() | This python string function removes the white spaces from the Left-hand side of a string |
maketrans() | It returns the transaction table. We can further use this transaction in translate() method. |
partition() | It partitions the given string at the first occurrence of the specified separator and returns a tuple with three arguments. |
replace() | This python string function searches for a specified string and replaces it with a new string value. |
rfind() | It returns the index position of the Last occurrence of a specified string. It returns -1 if the specified string not found |
rindex() | It returns the index position of the Last occurrence of a specified string. It raises ValueError if the specified Python string not found |
rjust() | Justify the string to the Right-hand side and fill the remaining width with default white spaces |
rpartition() | This python string function partitions the given string using the specified separator and returns a tuple with three arguments. |
rsplit() | Split the string into a list of strings based on the specified delimiter. It happens from right to left |
rstrip() | It removes the white spaces from the Right-hand side of a string |
split() | This python string function is very useful to Split the string into a list of strings based on the specified delimiter |
splitlines() | It returns a list of lines in the given string by breaking the given string at line boundaries. |
startswith() | Returns TRUE if the string Starts with the specified substring |
strip() | It removes the white spaces from both ends. Performs both lstrip() and rstrip() |
swapcase() | Converts the Lowercase letters into Uppercase. And Uppercase letters into Lowercase |
title() | This python string function converts the first character in each word to Uppercase and following characters to Lowercase |
translate() | Returns a Copy of the given string in which each character mapped with the transaction table. |
upper() | Converts the given string into Uppercase letters and returns a new string. |
zfill() | Returns a copy of the string filled with ASCII ‘0’ digits on the left-hand side of the string to make a string length to the specified width. |
Python Tutorial
Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises
Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises
Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises
Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises
Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises
Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise
Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting
Using quotes in Python
Strings in Python are delimited by single or double quote characters.
What if we wanted to display quotes, for example in a direct speech?
There are two basic ways to do this.
quotes.py
#!/usr/bin/env python # quotes.py print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"')
We use the character to escape additional quotes. Normally the double
quote character is used to delimit a string literal. However, when escaped, the
original meaning is suppressed. It appears as a normal character and can be
used within a string literal. The second way to use quotes within quotes is
to mix single and double quotes.
$ ./quotes.py There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?"
This is the output.
Пример: разделение строки по классу
Классы регулярных выражений – это классы, охватывающие группу символов. Мы будем использовать один из таких классов, \d, который соответствует любой десятичной цифре.
В этом примере мы также будем использовать +, который соответствует одному или нескольким предыдущим символам.
Регулярное выражение ‘\d +’ соответствует одной или нескольким десятичным цифрам. В этом примере мы будем использовать это регулярное выражение для разделения строки на фрагменты, разделенные одной или несколькими десятичными цифрами.
import re #a string str = 'foo635bar4125mango2apple21orange' #split with regular expression chunks = re.split('\d+',str) print(chunks)
Вывод:
Мы узнали, как повторно упаковать строку для разделения с помощью регулярных выражений.
Вы можете разделить строку пробелом в качестве разделителя в Python с помощью метода String.split().
В этом руководстве мы узнаем, как разделить строку пробелом в Python с помощью методов String.split() и re.split().
В этом примере мы возьмем строку, содержащую слова, элементы или фрагменты, разделенные пробелом. Затем мы разделим строку по пробелу с помощью метода String.split(), который возвращает список.
str = '63 41 92 81 69 70' #split string by single space chunks = str.split(' ') print(chunks)
Вывод:
Как извлечь подпоследовательность из строки?
Подпоследовательность строки — это последовательность символов, которые извлекаются из строки, не нарушая порядок, в котором символы присутствуют в строке.
Символы в подпоследовательности могут быть или не быть непрерывными символами входной строки Python.
Чтобы извлечь подпоследовательность, я использую оператор квадратной скобки . Синтаксис для захвата подпоследовательности из строки — string_name».
Difference обозначает число, которое должно быть добавлено к start_index, чтобы получить индекс следующего символа, который будет включен в подпоследовательность, а difference-1 — это символы, которые пропускаются после того, как символ включен в подпоследовательность.
Рассмотрим пример:
Вывод программы:
Задания для самоподготовки
1. Написать
программу корректности ввода телефонного номера по шаблону:
x(xxx)xxxxxx
где x – любая цифра от
0 до 9. Данные представлены в виде строки.
2. Написать
программу изменения строки
«2+3+6.7 +
82 + 5.7 +1»
на строку, в
которой все «+» заменены на «-» и удалены все пробелы
3. Написать
программу вывода чисел 0; -100; 5.6; -3 в виде столбца:
0 -100 5.6 -3
в котором все
строки выровнены по правому краю (подсказка: воспользуйтесь методом rjust).
4. В строке «abrakadabra» найдите все
индексы подстроки «ra» и выведите их (индексы) в консоль.
Видео по теме
Python 3 #1: установка и запуск интерпретатора языка
Python 3 #2: переменные, оператор присваивания, типы данных
Python 3 #3: функции input и print ввода/вывода
Python 3 #4: арифметические операторы: сложение, вычитание, умножение, деление, степень
Python 3 #5: условный оператор if, составные условия с and, or, not
Python 3 #6: операторы циклов while и for, операторы break и continue
Python 3 #7: строки — сравнения, срезы строк, базовые функции str, len, ord, in
Python 3 #8: методы строк — upper, split, join, find, strip, isalpha, isdigit и другие
Python 3 #9: списки list и функции len, min, max, sum, sorted
Python 3 #10: списки — срезы и методы: append, insert, pop, sort, index, count, reverse, clear
Python 3 #11: списки — инструмент list comprehensions, сортировка методом выбора
Python 3 #12: словарь, методы словарей: len, clear, get, setdefault, pop
Python 3 #13: кортежи (tuple) и операции с ними: len, del, count, index
Python 3 #14: функции (def) — объявление и вызов
Python 3 #15: делаем «Сапер», проектирование программ «сверху-вниз»
Python 3 #16: рекурсивные и лямбда-функции, функции с произвольным числом аргументов
Python 3 #17: алгоритм Евклида, принцип тестирования программ
Python 3 #18: области видимости переменных — global, nonlocal
Python 3 #19: множества (set) и операции над ними: вычитание, пересечение, объединение, сравнение
Python 3 #20: итераторы, выражения-генераторы, функции-генераторы, оператор yield
Python 3 #21: функции map, filter, zip
Python 3 #22: сортировка sort() и sorted(), сортировка по ключам
Python 3 #23: обработка исключений: try, except, finally, else
Python 3 #24: файлы — чтение и запись: open, read, write, seek, readline, dump, load, pickle
Python 3 #25: форматирование строк: метод format и F-строки
Python 3 #26: создание и импорт модулей — import, from, as, dir, reload
Python 3 #27: пакеты (package) — создание, импорт, установка (менеджер pip)
Python 3 #28: декораторы функций и замыкания
Python 3 #29: установка и порядок работы в PyCharm
Python 3 #30: функция enumerate, примеры использования
Python basic string operations
In the next example, we will do string multiplication and concatenation.
add_multiply.py
#!/usr/bin/env python # add_multiply.py print("eagle " * 5) print("eagle " "falcon") print("eagle " + "and " + "falcon")
The operator repeates the string n times. In our
case five times. Two string literals next to each other are automatically
concatenated. We can also use the operator to explicitly
concatenate the strings.
$ ./add_multiply.py eagle eagle eagle eagle eagle eagle falcon eagle and falcon
This is the output of script.
We can use the function to calculate the length
of the string in characters.
eagle.py
#!/usr/bin/python # eagle.py var = 'eagle' print(var, "has", len(var), "characters")
In the example, we compute the number of characters in a string variable.
$ ./eagle.py eagle has 5 characters
Some programming languages enable implicit addition of strings and numbers.
In Python language, this is not possible. We must explicitly convert values.
string_number.py
#!/usr/bin/python # string_number.py print(int("12") + 12) print("There are " + str(22) + " oranges.") print(float('22.33') + 22.55)
We use a built-in function to convert a string
to integer. And there is also a built-in function
to convert a number to a string. And we use the
function to convert a string to a floating point number.
Строки нарезки в Python – примеры
Струны нарезки Python могут быть сделаны по-разному.
Обычно мы получаем доступ к строковым элементам (символам) с помощью простой индексации, которая начинается с до N-1 (n – длина строки). Следовательно, для доступа к 1-й Элемент строки Мы можем просто использовать код ниже.
s1 = String1
Опять же, есть еще один способ получить доступ к этим персонажам, то есть используя Отрицательная индексация Отказ Отрицательная индексация начинается с -1 к -n (n – длина для данной строки). Примечание, отрицательная индексация выполняется с другого конца строки. Следовательно, для доступа к первому символу на этот раз нам нужно следовать указанному ниже коду.
s1 = String1
Теперь давайте рассмотрим некоторые способы, следующие, которые мы можем нарезать строку, используя вышеуказанную концепцию.
1. Строки нарезки в Python с началом и концом
Мы можем легко нарезать данную строку, упомянувая начальные и окончательные индексы для желаемой подковы, которую мы ищем. Посмотрите на приведенный ниже пример, он объясняет нарезку строк, используя начальные и окончательные индексы для обычной, так и для негативного метода индексации.
#string slicing with two parameters s = "Hello World!" res1 = s res2 = s #using negative indexing print("Result1 = ",res1) print("Result2 = ",res2)
Выход :
Result1 = llo Wo Result2 = rld
Здесь,
- Мы инициализируем строку, как “Привет мир!” ,
- Сначала мы нарезаем данную строку с начальным индексом 2 и окончание индекса как 8 Отказ Это означает, что результирующая подконта будет содержать символы из S к S ,
- Аналогично, для следующего, результирующая подкора должна содержать символы из S к S Отказ
Следовательно, наш выход оправдан.
2. Струки срез, используя только начало или конец
Как упоминалось ранее, все три параметра для нарезки строки являются необязательными. Следовательно, мы можем легко выполнить наши задачи с использованием одного параметра. Посмотрите на код ниже, чтобы получить четкое понимание.
#string slicing with one parameter s1= "Charlie" s2="Jordan" res1 = s1 #default value of ending position is set to the length of string res2 = s2 #default value of starting position is set to 0 print("Result1 = ",res1) print("Result2 = ",res2)
Выход :
Result1 = arlie Result2 = Jord
Здесь,
Сначала инициализируем две строки, S1 и S2 , Для нарезки их обоих мы просто упомяну о start_pos Для S1 и End_Pos только для S2, Следовательно, для RES1 , он содержит подконтную строку S1 из индекса 2 (как упоминалось) до последнего (по умолчанию он устанавливается на N-1)
Принимая во внимание, что для RES2 диапазон индексов лежит от 0 до 4 (упомянутых).
3. Строки нарезки в Python со ступенчатым параметром
Значение решает прыжок операции нарезки займет из одного индекса к другому. Посмотрите на пример ниже.
#string slicing with step parameter s= "Python" s1="Kotlin" res = s res1 = s1 #using negative parameters print("Resultant sliced string = ",res) print("Resultant sliced string(negative parameters) = ",res1)
Выход :
Resultant sliced string = Pto Resultant sliced string(negative parameters) = nl
В коде выше,
- Мы инициализируем две строки S и S1 и попытайтесь нарезать их за данные начальные и окончательные индексы, как мы сделали для нашего первого примера,
- Но на этот раз мы упомянули шаг значение, которое было установлено на 1 по умолчанию для предыдущих примеров,
- Для RES, имеющих размер шага 2 означает, что, в то время как прохождение для получения подстроки от индекса от 0 до 4, каждый раз, когда индекс будет увеличен по значению 2. То есть первый символ S («P») следующие символы в подпологе будут S и S до тех пор, пока индекс не будет меньше 5.
- Для следующего я. RES1 Упомянутый шаг (-2). Следовательно, похоже на предыдущий случай, персонажи в подстроке будут S1 Тогда S1 или S1 до тех пор, пока индекс не будет меньше (-4).
4. Реверсируя строку с помощью нарезки в Python
С использованием отрицательной индексной строки нарезки в Python мы также можем поменять строку и хранить ее в другой переменной. Для этого нам просто нужно упомянуть Размер (-1) Отказ
Давайте посмотрим, как это работает в приведенном ниже примере.
#reversing string using string slicing s= "AskPython" rev_s = s #reverse string stored into rev_s print(rev_s)
Выход :
nohtyPksA
Как мы видим, строка S обращается и хранится в Отказ Примечание : Для этого тоже исходная строка остается неповрежденной и нетронутой.
Вводная информация о строках
Как и во многих других языках программирования, в Python есть большая коллекция функций, операторов и методов, позволяющих работать со строковым типом.
Литералы строк
Литерал – способ создания объектов, в случае строк Питон предлагает несколько основных вариантов:
Если внутри строки необходимо расположить двойные кавычки, и сама строка была создана с помощью двойных кавычек, можно сделать следующее:
Разницы между строками с одинарными и двойными кавычками нет – это одно и то же
Какие кавычки использовать – решать вам, соглашение PEP 8 не дает рекомендаций по использованию кавычек. Просто выберите один тип кавычек и придерживайтесь его. Однако если в стоке используются те же кавычки, что и в литерале строки, используйте разные типы кавычек – обратная косая черта в строке ухудшает читаемость кода.
Кодировка строк
В третьей версии языка программирования Python все строки представляют собой последовательность Unicode-символов.
В Python 3 кодировка по умолчанию исходного кода – UTF-8. Во второй версии по умолчанию использовалась ASCII. Если необходимо использовать другую кодировку, можно разместить специальное объявление на первой строке файла, к примеру:
Максимальная длина строки в Python
Максимальная длина строки зависит от платформы. Обычно это:
- 2**31 — 1 – для 32-битной платформы;
- 2**63 — 1 – для 64-битной платформы;
Константа , определенная в модуле
Конкатенация строк
Одна из самых распространенных операций со строками – их объединение (конкатенация). Для этого используется знак , в результате к концу первой строки будет дописана вторая:
При необходимости объединения строки с числом его предварительно нужно привести тоже к строке, используя функцию
Сравнение строк
При сравнении нескольких строк рассматриваются отдельные символы и их регистр:
- цифра условно меньше, чем любая буква из алфавита;
- алфавитная буква в верхнем регистре меньше, чем буква в нижнем регистре;
- чем раньше буква в алфавите, тем она меньше;
При этом сравниваются по очереди первые символы, затем – 2-е и так далее.
Далеко не всегда желательной является зависимость от регистра, в таком случае можно привести обе строки к одному и тому же регистру. Для этого используются функции – для приведения к нижнему и – к верхнему:
Как удалить строку в Python
Строки, как и некоторые другие типы данных в языке Python, являются неизменяемыми объектами. При задании нового значения строке просто создается новая, с заданным значением. Для удаления строки можно воспользоваться методом , заменив ее на пустую строку:
Или перезаписать переменную пустой строкой:
Обращение по индексу
Для выбора определенного символа из строки можно воспользоваться обращением по индексу, записав его в квадратных скобках:
Индекс начинается с 0
В Python предусмотрена возможность получить доступ и по отрицательному индексу. В таком случае отсчет будет вестись от конца строки:
Escape Characters
Following table is a list of escape or non-printable characters that can be represented with backslash notation.
An escape character gets interpreted; in a single quoted as well as double quoted strings.
Backslash notation | Hexadecimal character | Description |
---|---|---|
\a | 0x07 | Bell or alert |
\b | 0x08 | Backspace |
\cx | Control-x | |
\C-x | Control-x | |
\e | 0x1b | Escape |
\f | 0x0c | Formfeed |
\M-\C-x | Meta-Control-x | |
\n | 0x0a | Newline |
\nnn | Octal notation, where n is in the range 0.7 | |
\r | 0x0d | Carriage return |
\s | 0x20 | Space |
\t | 0x09 | Tab |
\v | 0x0b | Vertical tab |
\x | Character x | |
\xnn | Hexadecimal notation, where n is in the range 0.9, a.f, or A.F |
Основные строковые функции
capitalize() | Преобразует первый символ строки в верхний регистр | str_name.capitalize() |
casefold() | Он преобразует любую строку в нижний регистр независимо от ее регистра | str_name.casefold() |
center() | Используется для выравнивания строки по центру | str_name.center (длина, символ) |
count() | Для подсчета количества раз, когда определенное значение появляется в строке. | str_name.count (значение, начало, конец) |
endswith() | Проверяет, заканчивается ли строка указанным значением, затем возвращает True | str_name.endswith (значение, начало, конец) |
find() | Используется для определения наличия указанного значения в строке | str_name.find (значение, начало, конец) |
index() | Он используется для поиска первого вхождения указанного значения в строке | str_name.index (значение, начало, конец) |
isalnum() | Проверяет, все ли символы являются буквенно-цифровыми, затем возвращает True | str_name.isalnum() |
isalpha() | Проверяет, все ли символы являются алфавитными (az), затем возвращает True | str_name.isalpha() |
isdecimal() | Проверяет, все ли символы являются десятичными (0-9), затем возвращает True | str_name.isdecimal() |
isdigit() | Проверяет, все ли символы являются цифрами, затем возвращает True | str_name.isdigit() |
islower() | Проверяет, все ли символы в нижнем регистре, затем возвращает True | str_name.islower() |
isnumeric() | Проверяет, все ли символы являются числовыми (0-9), затем возвращает True | str_name.isnumeric() |
isspace() | Проверяет, все ли символы являются пробелами, затем возвращает True | str_name.isspace() |
isupper() | Проверяет, все ли символы в верхнем регистре, затем возвращает True | str_name.isupper() |
lower() | Используется для преобразования всех символов в нижний регистр | str_name.lower() |
partition() | Используется для разделения строки на кортеж из трех элементов. | str_name.partition (значение) |
replace() | Используется для замены указанного слова или фразы другим словом или фразой в строке. | str_name.replace (старое значение, новое значение, количество) |
split() | Используется для разделения строки на список | str_name.split (разделитель, maxsplit) |
splitlines() | Используется для разделения строки и составления ее списка. Разбивается на разрыв строки. | str_name.splitlines (keeplinebreaks) |
startswith() | Проверяет, начинается ли строка с указанного значения, затем возвращает True | str_name.startswith (значение, начало, конец) |
strip() | Используется для удаления символов, указанных в аргументе, с обоих концов | str_name.strip (символы) |
swapcase() | Используется для замены строки верхнего регистра на нижний регистр или наоборот. | str_name.swapcase() |
title() | Преобразует начальную букву каждого слова в верхний регистр | str_name.title() |
upper() | Он используется для преобразования всех символов в строке в верхний регистр | str_name.upper() |
Форматирование строк
Форматирование строк (также известно как замещение) – это замещение значений в базовой строке. Большую часть времени вы будете вставлять строки внутри строк, однако, вам также понадобиться вставлять целые числа и числа с запятыми в строки весьма часто. Существует два способа достичь этой цели. Начнем с старого способа, после чего перейдем к новому:
Python
# -*- coding: utf-8 -*-
my_string = «Я люблю %s» % «Python»
print(my_string) # Я люблю Python
var = «яблоки»
newString = «Я ем %s» % var
print(newString) # Я ем яблоки
another_string = «Я люблю %s и %s» % («Python», var)
print(another_string) # Я люблю Python и яблоки
1 2 3 4 5 6 7 8 9 10 11 |
# -*- coding: utf-8 -*- my_string=»Я люблю %s»%»Python» print(my_string)# Я люблю Python var=»яблоки» newString=»Я ем %s»%var print(newString)# Я ем яблоки another_string=»Я люблю %s и %s»%(«Python»,var) print(another_string)# Я люблю Python и яблоки |
Как вы могли догадаться, % — это очень важная часть вышеописанного кода. Этот символ указывает Python, что вы скоро вставите текст на его место. Если вы будете следовать за строкой со знаком процента и другой строкой или переменной, тогда Python попытается вставить ее в строку. Вы можете вставить несколько строк, добавив несколько знаков процента в свою строку. Это видно в последнем примере
Обратите внимание на то, что когда вы добавляете больше одной строки, вам нужно закрыть эти строки в круглые скобки. Теперь взглянем на то, что случится, если мы вставим недостаточное количество строк:
Python
another_string = «Я люблю %s и %s» % «Python»
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
TypeError: not enough arguments for format string
1 2 3 4 5 |
another_string=»Я люблю %s и %s»%»Python» Traceback(most recent call last) File»<string>»,line1,in<fragment> TypeErrornotenough arguments forformatstring |
О-па. Мы не передали необходимое количество аргументов для форматирования строки. Если вы внимательно взгляните на пример, вы увидите, что у нас есть два экземпляра %, но для того, чтобы вставить строки, вам нужно передать столько же %, сколько у нас строк. Теперь вы готовы к тому, чтобы узнать больше о вставке целых чисел, и чисел с запятыми. Давайте взглянем.
Python
my_string = «%i + %i = %i» % (1,2,3)
print(my_string) # ‘1 + 2 = 3’
float_string = «%f» % (1.23)
print(float_string) # ‘1.230000’
float_string2 = «%.2f» % (1.23)
print(float_string2) # ‘1.23’
float_string3 = «%.2f» % (1.237)
print(float_string3) # ‘1.24’
1 2 3 4 5 6 7 8 9 10 11 |
my_string=»%i + %i = %i»%(1,2,3) print(my_string)# ‘1 + 2 = 3’ float_string=»%f»%(1.23) print(float_string)# ‘1.230000’ float_string2=»%.2f»%(1.23) print(float_string2)# ‘1.23’ float_string3=»%.2f»%(1.237) print(float_string3)# ‘1.24’ |
Первый пример достаточно простой. Мы создали строку, которая принимает три аргумента, и мы передаем их. В случае, если вы еще не поняли, Python не делает никаких дополнений в первом примере. Во втором примере, мы передаем число с запятой
Обратите внимание на то, что результат включает множество дополнительных нулей (1.230000). Нам это не нужно, так что мы указываем Python ограничить выдачу до двух десятичных значений в третьем примере (“%.2f”)
Последний пример показывает, что Python округлит числа для вас, если вы передадите ему дробь, что лучше, чем два десятичных значения. Давайте взглянем на то, что произойдет, если мы передадим неправильные данные:
Python
int_float_err = «%i + %f» % («1», «2.00»)
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
TypeError: %d format: a number is required, not str
1 2 3 4 |
int_float_err=»%i + %f»%(«1″,»2.00») Traceback(most recent call last) File»<string>»,line1,in<fragment> TypeError%dformatanumber isrequired,notstr |
В данном примере мы передали две строки вместо целого числа и дроби. Это привело к ошибке TypeError, что говорит нам о том, что Python ждал от нас чисел. Это указывает на отсутствие передачи целого числа, так что мы исправим это, по крайней мере, попытаемся:
Python
int_float_err = «%i + %f» % (1, «2.00»)
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
TypeError: float argument required, not str
1 2 3 4 5 |
int_float_err=»%i + %f»%(1,»2.00″) Traceback(most recent call last) File»<string>»,line1,in<fragment> TypeErrorfloatargument required,notstr |
Мы получили ту же ошибку, но под другим предлогом, в котором написано, что мы должны передать дробь. Как мы видим, Python предоставляет нам полезную информацию о том, что же пошло не так и как это исправить. Если вы исправите вложения надлежащим образом, тогда вы сможете запустить этот пример. Давайте перейдем к новому методу форматирования строк.
Произвольные выражения
Так как f-строки оцениваются по мере выражения, вы можете внести любую или все доступные выражения Python в них. Это позволит вам делать интересные вещи, например следующее:
Python
print(f»{2 * 37}»)
# Вывод: ’74’
1 2 |
print(f»{2 * 37}») # Вывод: ’74’ |
Также вы можете вызывать функции. Пример:
Python
def to_lowercase(input):
return input.lower()
name = «Eric Idle»
print(f»{to_lowercase(name)} is funny.»)
# Вывод: ‘eric idle is funny.’
1 2 3 4 5 6 7 |
defto_lowercase(input) returninput.lower() name=»Eric Idle» print(f»{to_lowercase(name)} is funny.») # Вывод: ‘eric idle is funny.’ |
Также вы можете вызывать метод напрямую:
Python
print(f»{name.lower()} is funny.»)
# Вывод: ‘eric idle is funny.’
1 2 |
print(f»{name.lower()} is funny.») # Вывод: ‘eric idle is funny.’ |
Вы даже можете использовать объекты, созданные из классов при помощи f-строки. Представим, что у вас есть следующий класс:
Python
class Comedian:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def __str__(self):
return f»{self.first_name} {self.last_name} is {self.age}.»
def __repr__(self):
return f»{self.first_name} {self.last_name} is {self.age}. Surprise!»
1 2 3 4 5 6 7 8 9 10 11 |
classComedian def__init__(self,first_name,last_name,age) self.first_name=first_name self.last_name=last_name self.age=age def__str__(self) returnf»{self.first_name} {self.last_name} is {self.age}.» def__repr__(self) returnf»{self.first_name} {self.last_name} is {self.age}. Surprise!» |
Вы могли бы сделать следующее:
Python
new_comedian = Comedian(«Eric», «Idle», «74»)
print(f»{new_comedian}»)
# Вывод: ‘Eric Idle is 74.’
1 2 3 4 |
new_comedian=Comedian(«Eric»,»Idle»,»74″) print(f»{new_comedian}») # Вывод: ‘Eric Idle is 74.’ |
Методы __str__() и __repr__() работают с тем, как объекты отображаются в качестве строк, так что вам нужно убедиться в том, что вы используете один из этих методов в вашем определении класса. Если вы хотите выбрать один, попробуйте __repr__(), так как его можно использовать вместо __str__().
Строка, которая возвращается __str__() является неформальным строковым представлением объекта и должна быть читаемой. Строка, которую вернул __str__() — это официальное выражение и должно быть однозначным. При вызове str() и repr(), предпочтительнее использовать __str__() и __repr__() напрямую.
По умолчанию, f-строки будут использовать __str__(), но вы должны убедиться в том, что они используют __repr__(), если вы включаете флаг преобразования !r:
Python
print(f»{new_comedian}»)
# Вывод: ‘Eric Idle is 74.’
print(f»{new_comedian!r}»)
# Вывод: ‘Eric Idle is 74. Surprise!’
1 2 3 4 5 |
print(f»{new_comedian}») # Вывод: ‘Eric Idle is 74.’ print(f»{new_comedian!r}») # Вывод: ‘Eric Idle is 74. Surprise!’ |
Если вы хотите прочитать часть обсуждения, в результате которого f-strings поддерживают полные выражения Python, вы можете сделать это здесь.