Как использовать str в python
В языке Python есть небольшой набор очень полезных встроенных функций. Все остальные функции распределены по модулям. В самом деле, это удачное проектное решение позволяет предотвратить разбухание ядра языка, как это произошло с некоторыми другими скриптовыми языками (например, Visual Basic).
Функция type возвращает тип произвольного объекта. Возможные значения типов перечислены в модуле types. Определение типа полезно в функциях, способных обрабатывать данные нескольких типов.
Пример 2.6. Функция type
>>> type(1) >>> li = [] >>> type(li) >>> import odbchelper >>> type(odbchelper) >>> import types >>> type(odbchelper) == types.ModuleType 1
| Функция type воспринимает объект произвольного типа и возвращает его тип. Аргумент действительно может быть произвольного типа: число, строка, список, словарь, кортеж, функция, класс, модуль и даже сам тип. | |
| В качестве аргумента может использоваться переменная. | |
| Функция type работает и c модулей. | |
| Вы можете использовать константы, определенные в модуле types для сравнения типов объектов. Именно это и делает, как мы скоро увидим, функция help. |
Функция str преобразует данные в строку. Для любого типа данных можно получить строковое представление.
Пример 2.7. Функция str
>>> str(1) '1' >>> horsemen = ['war', 'pestilence', 'famine'] >>> horsemen.append('Powerbuilder') >>> str(horsemen) "['war', 'pestilence', 'famine', 'Powerbuilder']" >>> str(odbchelper) "" >>> str(None) 'None'
| Вы, наверное, ожидали, что str будет работать с такими простыми типами данных, как целые числа, так как почти каждый язык содержит функцию для преобразования целого числа в строку. | |
| Однако, str работает и с объектами других типов. В данном случае мы получаем строковое представление списка. | |
| Функция str работает и с модулями. Обратите внимание, что строковое представление модуля содержит путь к модулю на диске, так что в вашем случае он будет отличаться. | |
| Важно также, что str работает и с объектом None, “нулевым” значением в языке Python. В этом случае она возвращает строку 'None'. Мы воспользуемся этим в функции help. |
Сердцем функции help является мощная функция dir. dir возвращает список атрибутов и методов произвольного объекта: модуля, функции, строки, списка, словаря… в общем, любого объекта.
Пример 2.8. Функция dir
>>> li = [] >>> dir(li) ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> d = <> >>> dir(d) ['clear', 'copy', 'get', 'has_key', 'items', 'keys', 'setdefault', 'update', 'values'] >>> import odbchelper >>> dir(odbchelper) ['__builtins__', '__doc__', '__file__', '__name__', 'buildConnectionString']
| li является списком, так что dir(li) дает список имен всех методов списка. Обратите внимание, что возвращаемый список содержит имена методов в виде строк, а не сами методы. | |
| d является словарем, поэтому dir(d) дает список имен методов словаря. Как минимум один из них, keys, вам уже знаком. | |
| Здесь начинается самое интересное. odbchelper является модулем, так что dir(odbchelper) дает список всех имен, определенных в модуле, включая специальные атрибуты, такие как __name__ и __doc__. В данном случае, odbchelper содержит одну пользовательскую функцию, buildConnectionString, которую мы изучали в главе Знакомство с языком Python. |
Наконец, функция callable возвращает 1, если аргумент может быть вызван, в противном случае возвращает 0. Вызов поддерживают такие объекты, как функции, методы и даже классы. (Более подробно о классах читайте в главе 3.)
Пример 2.9. Функция callable
>>> import string >>> string.punctuation '!"#$%&\'()*+,-./:;?@[\\]^_`<|>~' >>> string.join >>> callable(string.punctuation) 0 >>> callable(string.join) 1 >>> print string.join.__doc__ join(list [,sep]) -> string Return a string composed of the words in list, with intervening occurrences of sep. The default separator is a single space. (joinfields and join are synonymous)
| На смену большинству функций модуля string пришли методов строк (хотя многие до сих пор используют функцию join), но модуль также содержит множество полезных констант. Например string.punctuation содержит все стандартные символы пунктуации. | |
| Функция string.join объединяет строки списка в одну строку. | |
| string.punctuation является строкой и вызов не поддерживает. (Строки имеют методы, которые можно вызвать, но вы не можете вызвать саму строку.) | |
| string.join ялвляется функцией и поддерживает вызов с двумя аргументами. | |
| Любой объект, поддерживающий вызов, может иметь строку документации. Применяя функцию callable к каждому атрибуту объекта, мы можем определить, какие атрибуты представляют для нас интерес (методы, функции, классы), и какие можно игнорировать (константы и т. д.), не имея каких-либо начальных знаний об объекте. |
type, str, dir и другие втроенные функции языка Python сгруппированы в специальном модуле __builtin__ (обратите внимание на два символа подчеркивания в начале и два в конце). Встроенные функции доступны напрямую, как если бы интерпретатор при запуске автоматически выполнял from __builtin__ import *. Вы можете получить информацию о встроенных функциях (и других объектах) как об отдельной группе исследуя модуль __builtin__. Для этих целей у нас есть функция help. Попробуйте проделать это сейчас сами. Позже мы более подробно рассмотрим наиболее важные встроенные функции (некоторые классы исключений, например AttributeError, вам должны быть уже знакомы.)
Пример 2.10. Втроенные функции и другие объекты
>>> from apihelper import help >>> import __builtin__ >>> help(__builtin__, 20) ArithmeticError Base class for arithmetic errors. AssertionError Assertion failed. AttributeError Attribute not found. EOFError Read beyond end of file. EnvironmentError Base class for I/O related errors. Exception Common base class for all exceptions. FloatingPointError Floating point operation failed. IOError I/O operation failed. [. и т. д. . ]
| Python распространяется вместе с прекрасной документацией. Вам следует внимательно прочитать, чтобы заиметь представления о предоставляемых им возможностях. Но, в то время как при использовании большинства других языков вам необходимо все время возвращать к чтению документации (страниц man или, не дай Бог, MSDN), чтобы вспомнить, как использовать тот или иной модуль, Python в основном содержит эту документацию в себе. | |
- Python Library Reference описывает все встроенные функции и исключения.
Copyright © 2000, 2001, 2002 Марк Пилгрим
Copyright © 2001, 2002 Перевод, Денис Откидач
Строковый тип данных в Python: string
Строка — это некоторая последовательность символов. В языке Python строковые данные имеют формат str.
Строка в Python
Создадим первую текстовую переменную. Для создания строки можно использовать как одинарные, так и двойные кавычки:
>>> s = 'Hello world' >>> s 'Hello world' >>> s = "Hello world" >>> s 'Hello world'
Вывод в Python всегда будет в одинарных кавычках, так как производится перевод двойных кавычек в одинарные.
Проверим тип этой переменной:
>>> type(s)
Если необходимо задать большой фрагмент текста, то используются тройные кавычки:
>>> s='''Hello World!!''' >>> s 'Hello\nWorld!!'
В данном примере сохранился знак перехода на новую строку (‘\n’).
Преобразование чисел в строки и обратно
Любое число можно преобразовать в строку. Для этого используется функция str() давайте попробуем:
>>> str(1232) '1232' >>> str(-0.5) '-0.5'
Теперь попробуем выполнить обратное действие
>>> s = '123' >>> int(s) 123 >>> float(s) 123.0 >>> s = '1.23' >>> float(s) 1.23 >>> int(s) Traceback (most recent call last): File "", line 1, in int(s) ValueError: invalid literal for int() with base 10: '1.23'
Если вид числа не удовлетворяет типу данных, то преобразование не выполняется. Компилятор выдает ошибку вида invalid literal, что в переводе означает недопустимый литерал (символ), из-за наличия точки, то есть данное число является числом с плавающей точкой (float).
Чтобы избежать данной ошибки, в первую очередь необходимо выполнить преобразование в тип float. Если нужно, то затем преобразовываем полученный float в int.
>>> s='0.23' >>> int(float(s)) 0
Основные операции со строками в Python
Длина строки
В Python строка представляет собой массив символов, расположенных в определенной последовательности. Когда мы пишем:
>>> s='Hello world'
Компьютер представляет это следующим образом:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| H | e | l | l | o | w | o | r | l | d |
Воспользуемся функцией len(), чтобы узнать длину строки.
>>> len(s) 11
Как и было указано выше, длина данной строки — 11 символов (нумерация начинается с нуля).
Строка является массивом, поэтому мы можем обратиться к каждому отдельному элементу строки, давайте попробуем:
>>> s[2] 'l' >>> s[4] 'o'
Также можно получить, так называемый срез слова, то есть фрагмент из общей последовательности символов. Для этого нужно указать диапазон:
>>> s='Hello world' >>> s[2:5] 'llo'
Сложение строк
Давайте попробуем сложить 2 строки:
>>> s1='Hello' >>> s2='world' >>> s1+s2 'Helloworld'
Также при сложении можно добавлять не только переменные, которым присвоены строки, но и просто сами строки:
>>> s1='Hello' >>> s2='world' >>> s1+' '+s2+"!" 'Hello world!'
Попробуем сложить строки и числа:
>>> s1='number ' >>> s1+1 Traceback (most recent call last): File "", line 1, in s1+1 TypeError: can only concatenate str (not "int") to str
Строковой тип данных можно складывать только с таким же типом.
Достаточно выполнить преобразование, чтобы получить правильное решение:
>>> s1+str(1) 'number 1'
Умножение строк
Давайте попробуем выполнить различные умножения: на целое число, на дробное число, на само себя:
>>> s='Hi' >>> s*2 'HiHi' >>> s*1.2 Traceback (most recent call last): File "", line 1, in s*1.2 TypeError: can't multiply sequence by non-int of type 'float' >>> s*s Traceback (most recent call last): File "", line 1, in s*s TypeError: can't multiply sequence by non-int of type 'str'
Операция умножения в данном случае является дублированием строки. Такое действие можно выполнить только целое число раз, поэтому при умножении на дробное число или на строку выдаёт ошибку.
Умножать строковой тип данных можно только на целые числа.
Курсы Робикс, в которых изучается этот материал.
- Программирование на Python в Minecraft
- Duckietown робот с системой Автопилота
Python: str() — работа со строками
При вызове методов необходимо помнить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку. Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.
Основные методы строк, которые применяются в приложениях:
Таблица «Функции и методы строк»
| Функция или метод | Назначение |
|---|---|
| S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» |
Литералы строк |
| S = «s\np\ta\nbbb» | Экранированные последовательности |
| S = r»C:\temp\new» | Неформатированные строки (подавляют экранирование) |
| S = b»byte» | Строка байтов |
| S1 + S2 | Конкатенация (сложение строк) |
| S1 * 3 | Повторение строки |
| S[i] | Обращение по индексу |
| S[i:j:step] | Извлечение среза |
| len(S) | Длина строки |
| S.find(str[, start[, end]) | Поиск подстроки в строке. Возвращает номер первого вхождения (индекс подстроки в строке) или -1 |
| S.rfind(str[, start[, end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
| S.index(str[, start[, end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
| Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError | |
| Заменяет в строке S одну подстроку (old) на другую (new) num раз. Если num не указано, то заменить все вхождения old на new. Если num = 1, то заменить первое вхождение old на new. Если num = 3 — заменить первые 3 вхождения old на new. |
|
| S.split([delimeter[, num]]) | разбивает строку на подстроки в зависимости от разделителя |
| S.join(список) | объединяет строки в одну строку, вставляя между ними определенный разделитель S |
| S.isdigit() | возвращает True, если все символы строки — цифры |
| S.isnumeric() | возвращает True, если строка представляет собой число |
| S.isalpha() | возвращает True, если строка состоит только из алфавитных символов |
| S.isalnum() | Состоит ли строка из цифр или букв |
| S.islower() | возвращает True, если строка состоит только из символов в нижнем регистре. Знаки препинания и цифры дают True. |
| S.isupper() | возвращает True, если все символы строки в верхнем регистре. Знаки препинания и цифры дают True. |
| S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
| S.istitle() | Возвращает True, если ВСЕ слова в строке начинаются с заглавной буквы |
| S.startswith(str) | Возвращает True, если строка начинается с подстроки str |
| S.endswith(str) | Возвращает True, если строка заканчивается на подстроку str |
| S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
| S.upper() | переводит строку в вехний регистр |
| S.lower() | переводит строку в нижний регистр |
| S.title() | начальные символы всех слов в строке переводятся в верхний регистр |
| ord(символ) | Символ в его код ASCII |
| chr(число) | Код ASCII в символ |
| S.center(width, [fill]) | если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру |
| S.count(str, [start],[end]) | Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
| S.expandtabs([tabsize]) | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
| S.lstrip([chars]) | удаляет начальные пробелы из строки |
| S.rstrip([chars]) | удаляет конечные пробелы из строки |
| S.strip([chars]) | удаляет начальные и конечные пробелы из строки (удаление пробельных символов в начале и в конце строки). В параметре chars можно перечислить символы в любом порядке, которые следует удалить — удаляется символ, который присутствует в chars. |
| S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
| S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
| S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего — в нижний |
| S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
| S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
| S.ljust(width, fillchar=» «) | если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю |
| S.rjust(width, fillchar=» «) | если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю |
| Форматирование строки |
Энциклопедия Python:str()
Функция str() — это встроенная функция Python, которая преобразует другие типы данных в строки. Она принимает один аргумент, которым может быть любой объект, который необходимо преобразовать в строку. Затем функция возвращает строковое представление объекта.
Примеры использования
Преобразование данных в строку часто необходимо при работе с различными типами данных в Python. Одной из распространенных причин преобразования данных в строку является их отображение в удобном для пользователя виде, например, при выводе на консоль или записи в файл.
Например, если у вас есть числовое значение, которое вы хотите вывести на консоль, вы можете использовать функцию str() , чтобы сначала преобразовать его в строку. Это позволяет вам форматировать выходные данные так, чтобы это было понятно пользователю, например, добавляя метки или единицы измерения к значению.
Другая причина преобразования данных в строку — конкатенация или объединение с другими строками. Например, если у вас есть список имен, которые вы хотите объединить в одну строку, вы можете использовать метод join() для объединения строк, но сначала вам нужно преобразовать каждое имя в строку с помощью функции str() . .
В целом, преобразование данных в строку — это обычная операция в Python, необходимая для многих типов задач программирования, включая ввод/вывод, работу со строками и форматирование данных.
Преобразование целого числа в строку
num = 123 str_num = str(num)
В этом примере целое число 123 преобразуется в строку с помощью функции str() . Здесь следует отметить, что после преобразования числа в строку, то невозможно с таким типом данных далее производить математические расчёты. Такой же способ и применим к числам с плавающей строкой.
Преобразование логического значения в строку
boolean_val = True str_val = str(boolean_val)
В этом примере логическое значение True преобразуется в строку с помощью функции str( ).
Преобразование списка в строку
my_list = [1, 2, 3] str_list = str(my_list)
В этом примере список [1, 2, 3] преобразуется в строку с помощью функции str() .
Преобразовать словарь в строку
my_dict = 'name': 'John', 'age': 30> str_dict = str(my_dict)
В этом примере словарь преобразуется в строку с помощью функции str() .
