Работа со строками в python
Содержание:
- ISPRINTABLE (): Как проверить для печатных игр в строке в Python
- Простой синтаксис
- Разделение на подстроки в Python
- Способы нарезать строки в Python
- ISDIGIT (): Как проверить цифры только в строке в Python
- Шаблоны и новая методика форматирования строк
- Резюме:
- Повторение строк
- Multiline Strings
- Использование во время цикла и нарезки
- Python F-Строки: Детали
- Расширенные строковые функции Python
- Задания для самоподготовки
- Создает строку из списка строк.
- Python comparing strings
- Вводная информация о строках
- Python replacing strings
- Что такое строка в Python?
- Translate и Replace
- Обрабатываем строку в Python
- #1 Форматирование строк “По старинке” (оператор %)
- String Format
ISPRINTABLE (): Как проверить для печатных игр в строке в Python
Используйте Метод проверки, являются ли символы в строке печати.
text = '' # notice this is an empty string, there is no white space here print(text.isprintable()) #output: True text = 'This is a regular text' print(text.isprintable()) #output: True text = ' ' #one space print(text.isprintable()) #output: True text = ' ' #many spaces print(text.isprintable()) #output: True text = '\f\n\r\t\v' print(text.isprintable()) #output: False
Обратите внимание, что в первых 4 примерах каждый символ занимает некоторое пространство, даже если это пустое место, как вы можете видеть в первом примере. Последний пример возвращается Показаны 5 видов символов, которые непечатаются: Form Feed , линия подачи перевозка возврата , вкладка и вертикальная вкладка Отказ
Последний пример возвращается Показаны 5 видов символов, которые непечатаются: Form Feed , линия подачи перевозка возврата , вкладка и вертикальная вкладка Отказ
Некоторые из этих «невидимых» персонажей могут испортить свою печать, давая вам неожиданный выход, даже когда все выглядит «хорошо».
Простой синтаксис
Синтаксис аналогичен тому, который вы используете в (), но не такой перегруженный. Посмотрите на эту читабельность:
Python
name = «Eric»
age = 74
print(f»Hello, {name}. You are {age}.»)
# Вывод: ‘Hello, Eric. You are 74.’
1 2 3 4 5 |
name=»Eric» age=74 print(f»Hello, {name}. You are {age}.») # Вывод: ‘Hello, Eric. You are 74.’ |
Вы также можете использовать заглавную букву F:
Python
print(F»Hello, {name}. You are {age}.»)
# Вывод: ‘Hello, Eric. You are 74.’
1 2 |
print(F»Hello, {name}. You are {age}.») # Вывод: ‘Hello, Eric. You are 74.’ |
Вам уже нравится? Надеемся, что да, в любом случае, вы будете в восторге к концу статьи.
Разделение на подстроки в Python
Для разделения в Python используется метод split(). В зависимости от разделителя он разбивает строку на перечень подстрок. В роли разделителя в данном случае может быть любой символ либо последовательность символов. Этот метод имеет следующие формы:
• split(): в роли разделителя применяется такой символ, как пробел;
• split(delimeter): в роли разделителя применяется delimeter;
• split(delimeter, num): параметром num указывается, какое количество вхождений delimeter применяется для разделения. При этом оставшаяся часть строки добавляется в перечень без разделения на подстроки.
Способы нарезать строки в Python
Если вы хотите нарезать строки в Python, это будет так же просто, как эта одна строка ниже.
res_s = s
Здесь,
- RES_S хранит возвращенную суб-строку,
- S данная строка,
- start_pos является начальным индексом, из которого нам нужно нарезать строку S,
- End_Pos является окончательным индексом, прежде чем закончится операция нарезки,
- шаг Является ли шаги Процесс нарезка от START_POS в End_Pos.
Примечание : Все вышеперечисленные три параметра являются необязательными. По умолчанию установлен на , считается равным длине строки, а установлен на 1 Отказ
Теперь давайте возьмем некоторые примеры, чтобы понять, как лучше понять строки в Python.
ISDIGIT (): Как проверить цифры только в строке в Python
Используйте Метод проверки, содержит ли строка только цифры.
Цифры включают номера от 0 до 9, а также Superscripts и подписи.
word = '32' print(word.isdigit()) #output: True print("\u2083".isdigit()) #unicode for subscript 3 #output: True word = 'beach' print(word.isdigit()) #output: False word = 'number32' print(word.isdigit()) #output: False word = '1 2 3' #notice the space between chars print(word.isdigit()) #output: False word = '@32$' #notice the special chars '@' and '$' print(word.isdigit()) #output: False
более строгим, чем , который в свою очередь строчен, чем Отказ
Шаблоны и новая методика форматирования строк
Этот метод был добавлен в Python 2.4 в виде шаблонов строк, но в качестве обычного метода string, работающего через метод format в версии 2.6. Так что это не самый свежий метод, просто обновленный. В любом случае, приступим к работе с шаблонами!
Python
print(«%(lang)s is fun!» % {«lang»:»Python»}) # Python is fun!
1 | print(«%(lang)s is fun!»%{«lang»»Python»})# Python is fun! |
Должно быть это выглядит странно, но на самом деле мы сменили наши % на %(lang), с тем отличием, что данный объект идет в комплекте с переменной. Вторая часть пример вызывает словарь Python, который мы рассмотрим в следующей статье. В основном, это пара key:value, так что когда Python ищет ключ lang в строке и в указанном словаре ключей, он заменяет этот ключ его значением. Давайте взглянем на следующие примеры:
Python
a = «%(value)s %(value)s %(value)s !» % {«value»:»SPAM»}
print(a) # SPAM SPAM SPAM !
b = «%(x)i + %(y)i = %(z)i» % {«x»:1, «y»:2}
print(b)
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
KeyError: ‘z’
c = «%(x)i + %(y)i = %(z)i» % {«x»:1, «y»:2, «z»:3}
print(c) # 1 + 2 = 3
1 2 3 4 5 6 7 8 9 10 11 12 |
a=»%(value)s %(value)s %(value)s !»%{«value»»SPAM»} print(a)# SPAM SPAM SPAM ! b=»%(x)i + %(y)i = %(z)i»%{«x»1,»y»2} print(b) Traceback(most recent call last) File»<string>»,line1,in<fragment> KeyError’z’ c=»%(x)i + %(y)i = %(z)i»%{«x»1,»y»2,»z»3} print(c)# 1 + 2 = 3 |
В первом примере вы могли заметить, что мы передали только одно значение, но оно было вставлено три раза. Это одно из преимуществ использования шаблонов. Второй пример был загвоздкой, в которой мы забыли передать ключ z. В третьем примере эта проблема была исправлена с соответствующим результатом. Теперь давайте взглянем на то, что мы можем сделать, по аналогии с методом форматирования строк:
Python
a = «Python is as simple as {0}, {1}, {2}».format(«a», «b», «c»)
print(a) # ‘Python is as simple as a, b, c’
b = «Python is as simple as {1}, {0}, {2}».format(«a», «b», «c»)
print(b) # ‘Python is as simple as b, a, c’
xy = {«x»:0, «y»:10}
c = «Graph a point at where x={x} and y={y}».format(**xy)
print(c) # Graph a point at where x=0 and y=10
1 2 3 4 5 6 7 8 9 |
a=»Python is as simple as {0}, {1}, {2}».format(«a»,»b»,»c») print(a)# ‘Python is as simple as a, b, c’ b=»Python is as simple as {1}, {0}, {2}».format(«a»,»b»,»c») print(b)# ‘Python is as simple as b, a, c’ xy={«x»,»y»10} c=»Graph a point at where x={x} and y={y}».format(**xy) print(c)# Graph a point at where x=0 and y=10 |
В двух первых примерах вы можете увидеть, что мы можем передать объекты позиционно. Если мы перестроим порядок, мы получим немного другую выдачу. В последнем примере мы использовали словарь также, как мы использовали шаблоны ранее. Однако, нам нужно извлечь словарь при помощи двойной звездочки, чтобы он работал правильно. Существует множество других случаев, в которых используются строки, такие как определение ширины, выравнивание текста, конвертация в разные базы и многое другое. Убедитесь в том, что вы ознакомились с рекомендациями ниже, для дополнительной информации.
- Документация Python 2.Х о
Резюме:
Поскольку Python является объектно-ориентированным языком программирования, многие функции могут быть применены к объектам Python и Python Substring. Примечательной особенностью Python является его отступы исходных операторов, чтобы сделать код более легким для чтения.
- Доступ к значениям через нарезку – квадратные скобки используются для нарезки вместе с индексом или индексами для получения подстроки.При нарезке, если диапазон объявлен , он фактически может извлечь значение из диапазона
- При нарезке, если диапазон объявлен , он фактически может извлечь значение из диапазона
- Вы можете обновить строку Python, переназначив переменную другой строке
- Метод replace() возвращает копию строки, в которой вхождение old заменяется новым.Синтаксис метода заменяет oldstring.replace(“value to change”,”value to be replaced”)
- Синтаксис метода заменяет старую строку.replace(“value to change”,”value to be replaced”)
- Строковые операторы, такие как [], , in, Not in и т. Д., могут быть применены для объединения строки, извлечения или вставки определенных символов в строку или для проверки наличия определенного символа в строке
С помощью срезов или Python Substring мы извлекаем части строк. Мы можем указать необязательный начальный индекс и необязательный последний индекс (не длину). Смещения полезны.
Если у вас все еще есть какие-либо сомнения или путаница, сообщите нам об этом в разделе комментариев ниже.
Повторение строк
Однажды у вас могут возникнуть обстоятельства, при которых вы захотите использовать Python для автоматизации некоторых задач. И одной из таких задач может стать многократное повторение строки в тексте. Для того чтобы это осуществить, потребуется воспользоваться оператором , который, как и оператор , отличается от . При использовании с одной строкой и одним числом становится оператором повторения, а не умножения. Он лишь повторяет заданный текст указанное число раз.
Давайте выведем на экран 9 раз с помощью оператора .
print("Sammy" * 9) SammySammySammySammySammySammySammySammySammy
Таким образом, с помощью оператора повторения мы можем сколь угодно клонировать нужный нам текст.
Multiline Strings
>>> «»»Это пример
…многострочной
…переменной типа
..str»»»
‘Это пример\nмногострочной\nпеременной типа\nstr’
Каждый перенос строки представлен символом \n. Я
выделил его жёлтым для наглядности. Для Python это такой же символ как и остальные просто созданный с помощью
, о котором мы поговорим чуть ниже.
Зададим переменной s значение с использованием \n
>>> s = ‘Это пример\nмногострочной\nпеременной типа\nstr’
>>> print(s)
Это пример
многострочной
переменной типа
str
Точно такой же результат можно получить используя «»» «»»
>>> s = «»»Это пример
… многострочной
… переменной типа
… str»»»
>>> print(s)
Это пример
многострочной
переменной типа
str
Использование во время цикла и нарезки
Мы срезаем строку, делая ее короче на 1 с регулярными интервалами времени с каждой итерацией, пока строка не станет пустой строкой. Это когда цикл while останавливается. Поддерживая подсчет количества итераций, вы получите длину строки.
# Python code to demonstrate string length # using while loop. # Returns length of string def findLength(str): while str: + 1 return count print(findLength(str))
выход:
Объяснение:
В этом коде мы использовали цикл for для поиска длины строки. Во-первых, мы взяли переменную str, в которой мы дали “LatracalSolutions” в качестве строки. Во-вторых, мы вызвали функцию findLength, в которой мы установили значение count равным 0. В-третьих, затем применяется цикл while, в котором мы срезаем значение str на единицу на каждой итерации, пока строка не станет пустой. И, наконец, вернул значение счетчика.
Python F-Строки: Детали
На данный момент мы узнали почему f-строки так хороши, так что вам уже может быть интересно их попробовать в работе. Рассмотрим несколько деталей, которые нужно учитывать:
Кавычки
Вы можете использовать несколько типов кавычек внутри выражений. Убедитесь в том, что вы не используете один и тот же тип кавычек внутри и снаружи f-строки.
Этот код будет работать:
Python
print(f»{‘Eric Idle’}»)
# Вывод: ‘Eric Idle’
1 2 |
print(f»{‘Eric Idle’}») # Вывод: ‘Eric Idle’ |
И этот тоже:
Python
print(f'{«Eric Idle»}’)
# Вывод: ‘Eric Idle’
1 2 |
print(f'{«Eric Idle»}’) # Вывод: ‘Eric Idle’ |
Вы также можете использовать тройные кавычки:
Python
print(f»»»Eric Idle»»»)
# Вывод: ‘Eric Idle’
1 2 |
print(f»»»Eric Idle»»») # Вывод: ‘Eric Idle’ |
Python
print(f»’Eric Idle»’)
# Вывод: ‘Eric Idle’
1 2 |
print(f»’Eric Idle»’) # Вывод: ‘Eric Idle’ |
Если вам понадобиться использовать один и тот же тип кавычек внутри и снаружи строки, вам может помочь :
Python
print(f»The \»comedian\» is {name}, aged {age}.»)
# Вывод: ‘The «comedian» is Eric Idle, aged 74.’
1 2 |
print(f»The \»comedian\» is {name}, aged {age}.») # Вывод: ‘The «comedian» is Eric Idle, aged 74.’ |
Словари
Говоря о кавычках, будьте внимательны при работе со . Вы можете вставить значение словаря по его ключу, но сам ключ нужно вставлять в одиночные кавычки внутри f-строки. Сама же f-строка должна иметь двойные кавычки.
Вот так:
Python
comedian = {‘name’: ‘Eric Idle’, ‘age’: 74}
print(f»The comedian is {comedian}, aged {comedian}.»)
# Вывод: The comedian is Eric Idle, aged 74.
1 2 3 4 |
comedian={‘name»Eric Idle’,’age’74} print(f»The comedian is {comedian}, aged {comedian}.») # Вывод: The comedian is Eric Idle, aged 74. |
Обратите внимание на количество возможных проблем, если допустить ошибку в синтаксисе SyntaxError:
Python
>>> comedian = {‘name’: ‘Eric Idle’, ‘age’: 74}
>>> f’The comedian is {comedian}, aged {comedian}.’
File «<stdin>», line 1
f’The comedian is {comedian}, aged {comedian}.’
^
SyntaxError: invalid syntax
1 2 3 4 5 6 |
>>>comedian={‘name»Eric Idle’,’age’74} >>>f’The comedian is {comedian}, aged {comedian}.’ File»<stdin>»,line1 f’The comedian is {comedian}, aged {comedian}.’ ^ SyntaxErrorinvalid syntax |
Если вы используете одиночные кавычки в ключах словаря и снаружи f-строк, тогда кавычка в начале ключа словаря будет интерпретирован как конец строки.
Скобки
Чтобы скобки появились в вашей строке, вам нужно использовать двойные скобки:
Python
print(f»`74`»)
# Вывод: ‘{ 74 }’
1 2 3 |
print(f»`74`») |
Обратите внимание на то, что использование тройных скобок приведет к тому, что в строке будут только одинарные:
Python
print( f»{`74`}» )
# Вывод: ‘{ 74 }’
1 2 3 |
print(f»{`74`}») |
Однако, вы можете получить больше отображаемых скобок, если вы используете больше, чем три скобки:
Python
print(f»{{`74`}}»)
# Вывод: ‘`74`’
1 2 3 |
print(f»{{`74`}}») |
Бэкслеши
Как вы видели ранее, вы можете использовать бэкслеши в части строки f-string. Однако, вы не можете использовать бэкслеши в части выражения f-string:
Python
>>> f»{\»Eric Idle\»}»
File «<stdin>», line 1
f»{\»Eric Idle\»}»
^
SyntaxError: f-string expression part cannot include a backslash
1 2 3 4 5 |
>>>f»{\»Eric Idle\»}» File»<stdin>»,line1 f»{\»Eric Idle\»}» ^ SyntaxErrorf-stringexpression part cannot includeabackslash |
Вы можете проработать это, оценивая выражение заранее и используя результат в f-строк:
Python
name = «Eric Idle»
print(f»{name}»)
# Вывод: ‘Eric Idle’
1 2 3 4 |
name=»Eric Idle» print(f»{name}») |
Междустрочные комментарии
Выражения не должны включать комментарии с использованием символа #. В противном случае, у вас будет ошибка синтаксиса SyntaxError:
Python
>>> f»Eric is {2 * 37 #Oh my!}.»
File «<stdin>», line 1
f»Eric is {2 * 37 #Oh my!}.»
^
SyntaxError: f-string expression part cannot include ‘#’
1 2 3 4 5 |
>>>f»Eric is {2 * 37 #Oh my!}.» File»<stdin>»,line1 f»Eric is {2 * 37 #Oh my!}.» ^ SyntaxErrorf-stringexpression part cannot include’#’ |
Расширенные строковые функции Python
encode() | Используется для возврата закодированных строк | str_name.encode (кодировка = кодировка, ошибки = ошибки) |
expandtabs() | Для установки или исправления пробелов табуляции между символами или алфавитами | str_name.expandtabs (размер табуляции) |
format() | Заменяет имя переменной, записанное в {}, значением при выполнении | str_name.format (значение1, значение2 …) |
format_map() | Для форматирования заданной строки и возвращается | str_name.format_map (отображение) |
isidentifier() | Проверяет, являются ли символы буквенно-цифровыми буквами (az) и (0-9) или подчеркиванием (_), и возвращает True | str_name.isidentifier() |
isprintable() | Проверяет, все ли символы доступны для печати, затем возвращает True | str_name.isprintable() |
istitle() | Проверяет, все ли начальные символы слов в верхнем регистре, затем возвращает True | str_name.istitle() |
join() | Принимает слова как повторяемые и объединяет их в строку | str_name.join (повторяемый) |
ljust() | Возвращает выровненную по левому краю строку с минимальным значением, заданным как ширина | str_name.ljust (длина, символ) |
lstrip() | Удаляет символы с левого края на основе данного аргумента | str_name.lstrip (символы) |
maketrans() | Создает сопоставленную таблицу, используемую для переводов. | str_name.maketrans (x, y, z) |
rsplit() | Используется для разделения строки с правого конца | str_name.rsplit (разделитель, maxsplit) |
rfind() | Ищет указанное значение и находит позицию его последнего значения. | str_name.rfind (значение, начало, конец) |
rindex() | Ищет указанное значение и находит позицию его последнего значения. | str_name.rindex (значение, начало, конец) |
rjust() | Возвращает выровненную по правому краю строку с минимальным значением, заданным как ширина | str_name.rjust (длина, символ) |
rpartition() | Ищет последнее вхождение указанной строки и разбивает строку на кортеж из трех элементов. | str_name.rpartition (значение) |
rstrip() | Удаляет символы с правого конца на основе заданного аргумента | str_name.rstrip (символы) |
translate() | Используется для получения переведенной строки | str_name.translate (таблица) |
zfill() | Он возвращает новую строку с символами «0», добавленными слева в строке. | str_name.zfill (len) |
Задания для самоподготовки
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, примеры использования
Создает строку из списка строк.
Описание:
Метод возвращает строку, которая является конкатенацией (объединением) всех элементов строк итерируемого объекта .
В итоговой строке элементы объединяются между собой при помощи строки-разделителя .
Если в последовательности есть какие-либо НЕ строковые значения, включая байтовые строки , то поднимается исключение .
Примеры создания строки из списка строк.
>>> x = 'возвращает', 'строку', 'которая', 'является', 'конкатенацией' # объединение списка строк с разделителем "пробел" >>> line = ' '.join(x) >>> line # 'возвращает строку которая является конкатенацией' # в качестве разделителя символ новой строки '\n' >>> line = '\n'.join(x) >>> line # 'возвращает\nстроку\nкоторая\nявляется\nконкатенацией' >>> print(line) # возвращает # строку # которая # является # конкатенацией
Очень часто метод используется для формирования какого то итогового сообщения, в зависимости от условий в программе. В начале кода определяется пустой список, а по ходу программы, в результате проверок, добавляются части выходного сообщения (например при проверке корректности заполнения полей формы).
В примере будем использовать словарь из двух списков — (для ошибок) и (для итогового сообщения):
# здесь поступают какие то данные, пускай # num - должно быть целым числом # name - имя, которое должно быть не менее 3-х букв content = {'message' [], 'error' []} # далее идет код проверок например: if num if type(num) is int content'message'.append(f' - Введено число {num}') else content'error'.append(f' - {num} - это не целое число') else content'error'.append(' - Вы не ввели число') if name if len(name) > 3 content'message'.append(f' - Введено имя: {name}') else content'error'.append(' - Имя не должно быть короче 3-х букв') else content'error'.append(' - Вы не ввели имя') # в конце кода итоговые проверки и вывод сообщения if content'error']: # если есть какие-то ошибки content'error'.insert(, 'При вводе данных возникли ошибки:\n') result_message = '\n'.join(content'error']) else # если все хорошо. content'message'.insert(, 'Результаты ввода данных:\n') result_message = '\n'.join(content'message']) print(result_message)
Как добавить/соединить существующую строку со списком строк.
Очень просто. Необходимо существующую строку добавить в начало списка методом изменяющихся последовательностей , а затем применить метод .
# начальная строка >>> line = 'Состав корзины покупателя:' # список строк, которые нужно добавить >>> lst_line = '- картошка', '- морковь', '- лук', '- чеснок', '- свекла' # вставляем начальную строку по индексу 0 в список >>> lst_line.insert(, line) # объединяем список строк по разделителю '\n' >>> rez = '\n'.join(lst_line) >>> print(rez) # Состав корзины покупателя: # - картошка # - морковь # - лук # - чеснок # - свекла
Конечно данную операцию можно осуществить другим способом, при помощи оператора присваивания на месте . Но такой код будет работать значительно дольше и потреблять больше памяти, особенно это заметно, когда строк очень много.
>>> line = 'Состав корзины покупателя:' # список строк, которые нужно добавить >>> lst_line = '- картошка', '- морковь', '- лук', '- чеснок', '- свекла' >>> for add_line in lst_line ... line += f'\n{add_line}' ... print(line) # Состав корзины покупателя: # - картошка # - морковь # - лук # - чеснок # - свекла
Python comparing strings
Comparing strings is a common job in programming. We can compare two strings
with the operator. We can check the opposite with the
non-equality operator. The operators return a boolean
or .
comparing.py
#!/usr/bin/env python # comparing.py print("12" == "12") print("17" == "9") print("aa" == "ab") print("abc" != "bce") print("efg" != "efg")
In this code example, we compare some strings.
print("12" == "12")
These two strings are equal, so the line returns .
print("aa" == "ab")
The first two characters of both strings are equal. Next the following characters
are compared. They are different so the line returns .
print("abc" != "bce")
Since the two strings are different, the line returns .
$ ./comparing.py True False False True False
This is the output.
Вводная информация о строках
Как и во многих других языках программирования, в Python есть большая коллекция функций, операторов и методов, позволяющих работать со строковым типом.
Литералы строк
Литерал – способ создания объектов, в случае строк Питон предлагает несколько основных вариантов:
Если внутри строки необходимо расположить двойные кавычки, и сама строка была создана с помощью двойных кавычек, можно сделать следующее:
Разницы между строками с одинарными и двойными кавычками нет – это одно и то же
Какие кавычки использовать – решать вам, соглашение PEP 8 не дает рекомендаций по использованию кавычек. Просто выберите один тип кавычек и придерживайтесь его. Однако если в стоке используются те же кавычки, что и в литерале строки, используйте разные типы кавычек – обратная косая черта в строке ухудшает читаемость кода.
Кодировка строк
В третьей версии языка программирования Python все строки представляют собой последовательность Unicode-символов.
В Python 3 кодировка по умолчанию исходного кода – UTF-8. Во второй версии по умолчанию использовалась ASCII. Если необходимо использовать другую кодировку, можно разместить специальное объявление на первой строке файла, к примеру:
Максимальная длина строки в Python
Максимальная длина строки зависит от платформы. Обычно это:
- 2**31 — 1 – для 32-битной платформы;
- 2**63 — 1 – для 64-битной платформы;
Константа , определенная в модуле
Конкатенация строк
Одна из самых распространенных операций со строками – их объединение (конкатенация). Для этого используется знак , в результате к концу первой строки будет дописана вторая:
При необходимости объединения строки с числом его предварительно нужно привести тоже к строке, используя функцию
Сравнение строк
При сравнении нескольких строк рассматриваются отдельные символы и их регистр:
- цифра условно меньше, чем любая буква из алфавита;
- алфавитная буква в верхнем регистре меньше, чем буква в нижнем регистре;
- чем раньше буква в алфавите, тем она меньше;
При этом сравниваются по очереди первые символы, затем – 2-е и так далее.
Далеко не всегда желательной является зависимость от регистра, в таком случае можно привести обе строки к одному и тому же регистру. Для этого используются функции – для приведения к нижнему и – к верхнему:
Как удалить строку в Python
Строки, как и некоторые другие типы данных в языке Python, являются неизменяемыми объектами. При задании нового значения строке просто создается новая, с заданным значением. Для удаления строки можно воспользоваться методом , заменив ее на пустую строку:
Или перезаписать переменную пустой строкой:
Обращение по индексу
Для выбора определенного символа из строки можно воспользоваться обращением по индексу, записав его в квадратных скобках:
Индекс начинается с 0
В Python предусмотрена возможность получить доступ и по отрицательному индексу. В таком случае отсчет будет вестись от конца строки:
Python replacing strings
The method replaces substrings in a string
with other substrings. Since strings in Python are immutable, a new
string is built with values replaced.
replace(old, new )
By default, the method replaces all occurrences of a
substring. The method takes a third argument which limits the replacements
to a certain number.
replacing.py
#!/usr/bin/env python # replacing.py a = "I saw a wolf in the forest. A lonely wolf." b = a.replace("wolf", "fox") print(b) c = a.replace("wolf", "fox", 1) print(c)
We have a sentence where we replace ‘wolf’ with ‘fox’.
b = a.replace("wolf", "fox")
This line replaces all occurrences of the ‘wolf’ with ‘fox’.
c = a.replace("wolf", "fox", 1)
Here we replace only the first occurrence.
$ ./replacing.py I saw a fox in the forest. A lonely fox. I saw a fox in the forest. A lonely wolf.
This is the output.
Что такое строка в Python?
Строка в Python — это обычная последовательность символов (букв, цифр, знаков препинания).
Компьютеры не имеют дело с символами, они имеют дело с числами (в двоичной системе). Даже если вы видите символы на вашем экране, внутри памяти компьютера он хранится и обрабатываются как последовательность нулей и единиц.
Преобразование символа в число называется кодированием, а обратный процесс — декодированием. ASCII и Unicode — наиболее популярные из кодировок, которые используются для кодирования и декодирования данных.
В Python, строка — это последовательность символов Unicode. Юникод был введен для включения каждого символа на всех языках и обеспечения единообразия в кодировании.
Translate и Replace
Первый случай — заменить или удалить некоторые символы или подстроки из текста. В Python есть встроенные функции в модуле string, которые выполняют эти задачи.
Метод использует таблицу (которая строится при помощи функции ) для удаления или изменения определенных символов:
test_string = 'The quick brown fox jumps over the lazy dog' translation_map = str.maketrans('eo', ' ') test_string.translate( translation_map ) Out: 'Th quick br wn f x jumps v r th lazy d g'
Метод работает так, как следует из его названия — изменяя подстроку на нужную:
test_string = 'The quick brown fox jumps over the lazy dog' test_string.replace( 'fox', 'squirell') Out: 'The quick brown squirell jumps over the lazy dog'
Обрабатываем строку в Python
Представим, что ожидается ввод числа с клавиатуры. Перед преобразованием введенной нами строки в число можно легко проверить, введено ли действительно число. Если это так, выполнится операция преобразования. Для обработки строки используем такой метод в Python, как isnumeric():
string = input("Введите какое-нибудь число: ") if string.isnumeric(): number = int(string) print(number)
Следующий пример позволяет удалять пробелы в конце и начале строки:
string = " привет мир! " string = string.strip() print(string) # привет мир!
Так можно дополнить строку пробелами и выполнить выравнивание:
print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10))
В консоли Python будет выведено следующее:
iPhone 7 52000 Huawei P10 36000
#1 Форматирование строк “По старинке” (оператор %)
Строки в Python содержат уникальную встроенную операцию, доступ к которой можно получить через оператор %. Это позволяет заметно упростить позиционное форматирование. Если вы когда-либо работали с функцией printf в С, вы сразу узнаете, как это работает. Вот простой пример:
Python
print(‘Hello, %s’ % name)
# Вывод: «Hello, Bob»
1 2 3 |
print(‘Hello, %s’%name) |
Я использую определитель формата %s в данном случае, чтобы сказать Python, где именно заменить значение имени, представленного в виде строки.
Здесь, вы можете использовать определитель формата %x для конвертации значения int в строку и представить его в качестве шестнадцатеричного числа:
Python
errno = 50159747054
print(‘%x’ % errno)
# Вывод: ‘badc0ffee’
1 2 3 4 |
errno=50159747054 print(‘%x’%errno) |
“По старинке”, синтаксис форматирования строки немного меняется, если вы хотите сделать несколько замен в одной строке. Так как оператор % принимает только один аргумент, вам нужно обернуть правую часть в , вот так:
Python
errno = 50159747054
name = ‘Bob’
print(‘Hey %s, there is a 0x%x error!’ % (name, errno))
# ‘Hey Bob, there is a 0xbadc0ffee error!’
1 2 3 4 5 6 |
errno=50159747054 name=’Bob’ print(‘Hey %s, there is a 0x%x error!’%(name,errno)) |
Также возможно сослаться на заменители переменных по имени в вашей строке формата, если вы передадите сопоставление оператору %:
Python
print(
‘Hey %(name)s, there is a 0x%(errno)x error!’ % {
«name»: name, «errno»: errno
}
)
# Вывод: ‘Hey Bob, there is a 0xbadc0ffee error!’
1 2 3 4 5 6 7 |
print( ‘Hey %(name)s, there is a 0x%(errno)x error!’%{ «name»name,»errno»errno } ) |
Это помогает сделать настройки вашего формата более простым процессом, а также упрощает его модификацию в будущем. Вам не нужно беспокоиться о том, что порядок, который вы передаете в значениях, совпадает с порядком, в котором значения указаны в строке формата. Конечно, недостаток — это то, что эта техника требует немного больше ручного ввода.
Я уверен, что вы думаете, почему это printf форматирование считается старым форматированием строк. Технически, оно было заменено новым подходом к форматированию в “Python 3”, которое мы сейчас и рассмотрим!
String Format
As we learned in the Python Variables chapter, we cannot combine strings and numbers like this:
Example
age = 36txt = «My name is John, I am » + ageprint(txt)
But we can combine strings and numbers by using the method!
The method takes the passed arguments,
formats them, and places them in the string where the placeholders
are:
Example
Use the method to insert numbers
into strings:
age = 36txt = «My name is John, and I am {}»print(txt.format(age))
The format() method takes unlimited number of arguments, and are placed into
the respective placeholders:
Example
quantity = 3itemno = 567price = 49.95myorder = «I want {}
pieces of item {} for {} dollars.»print(myorder.format(quantity,
itemno, price))
You can use index numbers to be sure the arguments are placed
in the correct placeholders:
Example
quantity = 3itemno = 567price = 49.95myorder = «I want to pay {2}
dollars for {0} pieces of item {1}.»print(myorder.format(quantity,
itemno, price))
Learn more about String Formatting in our String Formatting chapter.
❮ Previous
Next ❯