Работа со строками в python

Содержание:

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`»)

 
# Вывод: ‘{ 74 }’

Обратите внимание на то, что использование тройных скобок приведет к тому, что в строке будут только одинарные:

Python

print( f»{`74`}» )

# Вывод: ‘{ 74 }’

1
2
3

print(f»{`74`}»)

 
# Вывод: ‘{ 74 }’

Однако, вы можете получить больше отображаемых скобок, если вы используете больше, чем три скобки:

Python

print(f»{{`74`}}»)

# Вывод: ‘`74`’

1
2
3

print(f»{{`74`}}»)

 
# Вывод: ‘`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}»)

 
# Вывод: ‘Eric Idle’

Междустрочные комментарии

Выражения не должны включать комментарии с использованием символа #. В противном случае, у вас будет ошибка синтаксиса 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)

 
# Вывод: «Hello, Bob»

Я использую определитель формата %s в данном случае, чтобы сказать Python, где именно заменить значение имени, представленного в виде строки.

Здесь, вы можете использовать определитель формата %x для конвертации значения int в строку и представить его в качестве шестнадцатеричного числа:

Python

errno = 50159747054
print(‘%x’ % errno)

# Вывод: ‘badc0ffee’

1
2
3
4

errno=50159747054

print(‘%x’%errno)

 
# Вывод: ‘badc0ffee’

“По старинке”, синтаксис форматирования строки немного меняется, если вы хотите сделать несколько замен в одной строке. Так как оператор % принимает только один аргумент, вам нужно обернуть правую часть в , вот так:

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))

 
# ‘Hey Bob, there is a 0xbadc0ffee error!’

Также возможно сослаться на заменители переменных по имени в вашей строке формата, если вы передадите сопоставление оператору %:

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

}

)
 
# Вывод: ‘Hey Bob, there is a 0xbadc0ffee error!’

Это помогает сделать настройки вашего формата более простым процессом, а также упрощает его модификацию в будущем. Вам не нужно беспокоиться о том, что порядок, который вы передаете в значениях, совпадает с порядком, в котором значения указаны в строке формата. Конечно, недостаток — это то, что эта техника требует немного больше ручного ввода.

Я уверен, что вы думаете, почему это 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 ❯

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector