Итак, о работе со строками мы немного поговорили, теперь поговорим о функциях и методах строк.
Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл — поправляйте.
Конкатенация (сложение)
>>> S1 = 'spam' >>> S2 = 'eggs' >>> print(S1 + S2) 'spameggs'
Дублирование строки
>>> print('spam' * 3) spamspamspam
Длина строки (функция len)
>>> len('spam') 4
Доступ по индексу
>>> S = 'spam' >>> S[0] 's' >>> S[2] 'a' >>> S[-2] 'a'
Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.
Извлечение среза
Оператор извлечения среза: [X:Y]. X – начало среза, а Y – окончание;
символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй — длине строки.
>>> s = 'spameggs' >>> s[3:5] 'me' >>> s[2:-2] 'ameg' >>> s[:6] 'spameg' >>> s[1:] 'pameggs' >>> s[:] 'spameggs'
Кроме того, можно задать шаг, с которым нужно извлекать срез.
>>> s[::-1] 'sggemaps' >>> s[3:5:-1] '' >>> s[2::2] 'aeg'
При вызове методов необходимо помнить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.
>>> s = 'spam' >>> s[1] = 'b' Traceback (most recent call last): File "", line 1, in s[1] = 'b' TypeError: 'str' object does not support item assignment >>> s = s[0] + 'b' + s[2:] >>> s 'sbam'
Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.
Функция или метод | Назначение |
---|---|
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 |
S.rindex(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
S.replace(шаблон, замена[, maxcount]) | Замена шаблона на замену. maxcount ограничивает количество замен |
S.split(символ) | Разбиение строки по разделителю |
S.isdigit() | Состоит ли строка из цифр |
S.isalpha() | Состоит ли строка из букв |
S.isalnum() | Состоит ли строка из цифр или букв |
S.islower() | Состоит ли строка из символов в нижнем регистре |
S. isupper() | Состоит ли строка из символов в верхнем регистре |
S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
S.istitle() | Начинаются ли слова в строке с заглавной буквы |
S.upper() | Преобразование строки к верхнему регистру |
S.lower() | Преобразование строки к нижнему регистру |
S.startswith(str) | Начинается ли строка S с шаблона str |
S.endswith(str) | Заканчивается ли строка S шаблоном str |
S.join(список) | Сборка строки из списка с разделителем S |
ord(символ) | Символ в его код ASCII |
chr(число) | Код ASCII в символ |
S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
S. center(width, [fill]) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
S.count(str, [start],[end]) | Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
S.expandtabs([tabsize]) | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
S.lstrip([chars]) | Удаление пробельных символов в начале строки |
S.rstrip([chars]) | Удаление пробельных символов в конце строки |
S.strip([chars]) | Удаление пробельных символов в начале и в конце строки |
S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
S.ljust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
S.rjust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
S. format(*args, **kwargs) | Форматирование строки |
Для вставки кода на Python в комментарий заключайте его в теги <pre><code>Ваш код</code></pre>
Свежее
Категории
Полезные материалы
Мы в соцсетях
Поиск на других ресурсах:
Функция int() есть конструктором класса int. Эта функция возвращает целочисленный объект, который может быть образован из:
Функция может вызваться одним из двух способов:
Пример.
# Функция int() # 1. Вызов без параметров a = int() # a = 0 # 2. Вызов с целочисленным значением a = int(15) # a = 15 # 3. Вызов с числом с плавающей запятой a = int(2.85) # a = 2 # 4. Вызов со строкой s = '28' a = int(s) # a = 28 # 5. Вызов с конвертированием в другую систему исчисления - только для строк # конвертировать 155 из 16-й системы в десятичную s = '155' a = int(s, 16) # a = 341, значение 155 в 16-й системе # конвертировать 111 из двоичной системы в десятичную s = '111' a = int(s, 2) # a = 7 # 6. Так нельзя # a = int(111,2) - ошибка, нельзя конвертировать число, должна быть строка
Функция str() есть конструктором класса str. Функция возвращает объект в виде строки. Функция используется для конвертирования из одного типа (например числового) в строчный тип.
Функция имеет две реализации:
Результат функции str() может использоваться для вывода в функции print().
Пример.
# Функция str() # 1. Вызов с целым числом x = 25 s = str(x) # s = '25' - строка символов # 2.Вызов с числом с плавающей запятой y = 2.338 s = str(y) # s = '2.338' # 3. Вызов со строкой s = str("3.778") # s = '3.778' # 4. Вызов со строкой, которая не отображает число s = str("abcdef") # s = 'abcdef' # 5. Вызов без параметров s = str() # s = ''
Функция repr() реализует преобразование в строку таким образом, если бы эта строка была литералом в программном коде.
Функция repr() может быть применена к:
Пример 1. Конвертировать целое число в строку, которая представлена литералом.
# Функция repr() # конвертировать целое число в строку number = 25 snumber = repr(number) # snumber = '25' - как строка символов number = -100029 snumber = repr(number) # snumber = '-100029' - как строка символов
Пример 2. Конвертировать в строку число с плавающей запятой.
# Функция repr() # конвертировать число с плавающей запятой в строку number = 25.233 snumber = repr(number) # snumber = '25.233' snumber = repr(-1e-2) # snumber = '-0.01'
Пример 3. Конвертировать строку символов в другую строку так если бы она была литералом.
# Функция repr() # конвертировать строку в строку s1 = 'Text string' s2 = repr(s1) # s2 = "'Text string'" s1 = "Text string" s2 = repr(s1) # s2 = "'Text string'"
Пример 4. Конвертирование кортежа.
# Функция repr() - обработка кортежа x = ( 2.85, 15, 'Hello') str_x = repr(x) # str_x = "(2.85, 15, 'Hello')"
В языке Python функции repr() и str() преобразуют произвольные объекты в их строчное представление.
Разница между функциями проявляется в том, как они конвертируют строку.
Функция repr() возвращает представление строчного объекта в виде строки программного кода, которую можно выполнить чтобы воссоздать этот объект. Иными словами, функция repr() возвращает строку в виде строки. При использовании такого объекта в функции print() будут выведены ограничивающие строку кавычки (строка во вложенных кавычках).
В свою очередь, функция str() используется для конвертирования строки в строку без ее преобразования в предшествующую форму. При использовании результата функции str() в функции print() будет выведена обычная строка в одинарных кавычках.
Например.
# Функции repr() и str() # конвертировать строку в строку s1 = 'Text string' # функция repr() s2 = repr(s1) # s2 = "'Text string'" # функция str() s3 = str(s1) # s3 = 'Text string'
Как видно из вышеприведенного кода, функция repr() возвращает строку как литерал
"'Text string'"
а функция str() возвращает обычную строку
'Text string'
Функция float() возвращает число с плавающей запятой, которое может быть образовано от другого числа или от строки. Функция может вызываться одним из двух способов:
В качестве входного параметра или исходного результата функция может использовать грамматические символы:
Пример.
# Функция float() - возвращает число с плавающей запятой # 1. Результат получается из числа a = 25 # целое число x = float(a) # x = 25.0 b = 21.555e-2 # число с плавающей запятой x = float(b) # x = 0.21555 # 2. Результат получается из строки # s = 'abcdef' - ошибка, строка не имеет вида числа # x = float(s) # строка в экспоненциальном формате s = '-1.23e-2' x = float(s) # x = -0.0123 # строка в обычном формате s = "288.75" x = float(s) # x = 288.75 - как число # использование в выражении x = float(5.2)+float(3.8)*float(-2.1) # x = -2.7799999999999994 # использование со знаком + x = float('+2.34') # x = 2.34 # использование со словом "Infinity" или "inf" x = float("Infinity") # x = inf x = float('-inf') # x = -inf - с отрицательным знаком # использование со словом "nan" x = float("nan") # x = nan x = float() # x = 0.0
Функции ord() и chr() используются для одиночных символов. Эти функции являются инверсными друг к другу.
Функция chr() позволяет получать символ на основе его кода. Функция ord() позволяет получить код на основе представления символа.
Общая форма вызова функции chr() следующая
c = chr(i)
где c – символьное представление символа с Unicode-кодом i.
Общая форма вызова функции ord()
i = ord(c)
где i – код символа c.
Пример.
# Функции chr() и ord() # 1. Функция chr() code = 49 # код в десятичной системе исчисления symbol = chr(code) # symbol = '1' - цифра '1' code = 100 symbol = chr(code) # symbol = 'd' code = 7785 symbol = chr(code) # symbol = 'ṩ' - кодирование Unicode # 2. Функция ord symbol = '5' code = ord(symbol) # code = 53 symbol = 'ṩ' code = ord(symbol) # code = 7785 symbol = ' ' # символ пробел code = ord(symbol) # code = 32
Нет, нельзя. Если нужно сложить число в форме строки, то для этого используется соответствующая функция преобразования. Если нужно сложить две строки (конкатенация строк), то число конвертируется в строку с помощью соответствующей функции.
Пример.
# Сложить строку с числом не получится s = '25' # это строка a = 30 # это число # Случай 1. Сложить (суммировать) два числа # Предварительно нужно конвертировать строку в число b = int(s) res = a + b print('As numbers: a + s = ', res) # Случай 2. Сложить две строки # Предварительно нужно конвертировать число в строку res_str = str(a) + s print('As strings: a + s = ', res_str)
Результат выполнения программы
As numbers: a + s = 55 As strings: a + s = 3025
По своему обыкновению, я собираюсь предоставить немного базовой технической информации о причинах этой ошибки.
Я собираюсь изучить четыре разных способа инициализации строк C и посмотреть, в чем между ними разница. Речь идет о четырех способах:
char *text = "Это какой-то текст"; char text[] = "Это какой-то текст"; const char *text = "Это какой-то текст"; const char text[] = "Это какой-то текст";
Теперь для этого я хочу заменить третью букву «i» на «o», чтобы получилось «Это какой-то текст». Во всех случаях (как вы думаете) этого можно было бы добиться:
text[2] = 'o';
Теперь давайте посмотрим, что делает каждый способ объявления строки и как это text[2] = 'o'; Заявление
повлияет на вещи.
Первый наиболее часто встречающийся способ: char *text = "Это какой-то текст";
. Что это означает буквально? Ну, в C это буквально означает «Создать переменную с именем 9».0013 текст , который является указателем для чтения-записи на этот строковый литерал, который хранится в пространстве только для чтения (кода).». Если у вас включена опция -Wwrite-strings
, вы получите предупреждение, как показано на вопрос выше.
В основном это означает: «Предупреждение: вы попытались сделать переменную, доступную для чтения и записи, точкой для области, в которую вы не можете писать». Если вы попытаетесь установить третий символ на «o», вы на самом деле попробуйте записать в область только для чтения, и все будет не очень хорошо.На традиционном ПК с Linux это приводит к:
Ошибка сегментации
Теперь второй: char text[] = "Это какой-то текст";
. Буквально в C это означает: «Создайте массив типа «char» и инициализируйте его данными «Это какой-то текст\0». Размер массива будет достаточно большим для хранения данных». Таким образом, фактически выделяется ОЗУ и копируется в нее значение «Это какой-то текст\0» во время выполнения. Никаких предупреждений, никаких ошибок, совершенно верно. И как правильно это сделать если вы хотите иметь возможность редактировать данные . Попробуем запустить команду text[2] = 'o'
:
Это какой-то текст
Сработало, отлично. Хороший.
Теперь третий способ: const char *text = "Это какой-то текст";
. Снова буквальное значение: «Создайте переменную с именем «текст», которая является указателем только для чтения на эти данные в памяти только для чтения». Обратите внимание, что и указатель, и данные теперь доступны только для чтения. Никаких ошибок, никаких предупреждений. Что произойдет, если мы попытаемся запустить нашу тестовую команду? Ну, мы не можем. Компилятор теперь умный и знает, что мы пытаемся сделать что-то плохое:
Ошибка: назначение местоположения только для чтения ‘*(text + 2u)’
Он даже не компилируется. Попытка записи в память только для чтения теперь защищена, поскольку мы сообщили компилятору, что наш указатель указывает на память только для чтения. Конечно, не имеет , указывающего на память только для чтения, но если вы укажете на память для чтения и записи (ОЗУ), эта память все равно будет защищена от записи компилятором.
Наконец, последняя форма: const char text[] = "Это какой-то текст";
. Опять же, как и раньше с []
, он выделяет массив в ОЗУ и копирует в него данные. Однако теперь это массив только для чтения. Вы не можете писать в него, потому что указатель на него помечен как const
. Попытка записать в него приводит к:
Ошибка: назначение местоположения только для чтения ‘*(text + 2u)’
Итак, краткий обзор того, где мы находимся:
Эта форма совершенно недействительна, и ее следует избегать любой ценой. Это открывает двери для всевозможных плохих вещей:
char *text = "Это какой-то текст";
Эта форма подходит, если вы хотите сделать данные редактируемыми:
char text[] = "Это какой-то текст";
Эта форма подходит, если вы хотите, чтобы строки не редактировались:
const char *text = "Это какой-то текст";
Эта форма кажется расточительством оперативной памяти, но у нее есть свое применение. Хотя лучше пока забудьте.
const char text[] = "Это какой-то текст";
Обратите внимание: все пробелы и двоеточия (:) в шестнадцатеричной строке будут удалены.
Нужно преобразовать текст в шестнадцатеричный?
Шестнадцатеричная система счисления используется для удобного представления двоичных значений в компьютерном программировании и цифровой электронике. Большинство языков программирования, таких как Java, ASP.NET, C++, Fortran и т. д., имеют встроенные функции, которые конвертируют в шестнадцатеричный формат и из него.
Большинство людей знакомы с десятичной или десятичной системой счисления (все возможные числа можно записать с помощью 10 цифр: 0,1,2,3,4,5,6,7,8,9).). Имея всего 10 цифр, дополнительные цифры необходимо использовать через определенные промежутки времени, чтобы правильно записать число. Например, в числе 423 004 используется вдвое больше цифр, чем в числе 961.
Шестнадцатеричная система с основанием 16 была создана для имитации некоторых свойств обычной десятичной системы. Общая разница в том, что для обозначения значения числа доступно 16 цифр вместо 10 цифр.
В шестнадцатеричной системе используются 16 символов: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E и F. Таким образом, вместо десятичного символа 10 в шестнадцатеричном формате используется A, и так далее, и так далее, пока мы не доберемся до десятичного числа 15, которое обозначается как F. Аналогично десятичной системе, после того, как было использовано основание из 16 символов, добавляется соответствующая дополнительная цифра, и порядок чисел начинается заново. Другими словами, после F мы начинаем с 10 и так далее. Чтобы лучше понять взаимосвязь между десятичной и шестнадцатеричной системами счисления, ознакомьтесь с таблицей ниже.
Шестнадцатеричная кодировка используется программистами для улучшения читаемости байтов, которые используются для связи с компьютерами. Существует ряд преимуществ использования шестнадцатеричного кодирования, в том числе доступная более высокая плотность информации, поскольку шестнадцатеричное кодирование эффективно сокращает 8 цифр двоичного кода до 2 шестнадцатеричных цифр. Таким образом, 2 шестнадцатеричных цифры выражают любое число от 0 до 255, то есть тот же набор чисел, что и 8 цифр в двоичном формате.
Хотя шестнадцатеричное кодирование является популярной стратегией кодирования, используемой программистами, шестнадцатеричное кодирование значительно увеличивает объем используемого хранилища, что снижает эффективность вашего взаимодействия с компьютером. Если место для хранения является проблемой, в качестве альтернативы рекомендуется кодирование в Base 64.
Причины использования шестнадцатеричного кодирования в основном те же, что и для кодирования Base64 — оно используется, когда вы хотите отправить или сохранить 8-битные данные на носителе, который принимает только 6 или 7 бит. Шестнадцатеричное кодирование выполняется путем преобразования 8-битных данных в 2 шестнадцатеричных символа. Шестнадцатеричные символы затем сохраняются как двухбайтовые строковые представления символов.
Часто для облегчения чтения закодированных данных используется какой-либо разделитель. С 8 битами, преобразованными в три символа, и каждый символ хранится как 1-4 байта, вы можете использовать до 12 байтов (или даже больше в некоторых случаях) для каждого байта информации.
Опять же, не используйте шестнадцатеричное кодирование, если вам не хватает места для хранения. Однако кодировка довольно легко читается, поэтому, если удобочитаемость для человека является проблемой, то шестнадцатеричная кодировка, вероятно, является лучшим выбором, чем кодировка base64.
Приведенный выше преобразователь шестнадцатеричного кода в текст очень прост в использовании. Введите или вставьте шестнадцатеричное число, которое вы хотите преобразовать в текст, а затем нажмите «Преобразовать» под областью вставки.