Строковые методы
Содержание:
- Rjust (): как правильно озвучить строку в Python
- Шаблоны и новая методика форматирования строк
- Unicode
- Использование цикла for для поиска длины строки в python
- Создает строку из списка строк.
- String Format
- Присоединяйтесь к (): Как присоединиться к элементам элементами для одной строки в Python
- А форматирование строк?
- Произвольные выражения
- Python string length
- Строковые функции, методы и операторы
- Основы строки Python
- Скорость
- bytes
- Как обрабатывать многослойные строки в Python
- Методы строк
- ISPRINTABLE (): Как проверить для печатных игр в строке в Python
- Python f-строки: особенности использования
Rjust (): как правильно озвучить строку в Python
Используйте направо – оправдать строку.
word = 'beach' number_spaces = 32 word_justified = word.rjust(number_spaces) print(word) #'beach' print(word_justified) #' beach'
Обратите внимание на пробелы во второй строке. Слово «Beach» имеет 5 символов, что дает 27 пространства для заполнения пустым пространством
Оригинал Переменная остается неизменным, поэтому нам нужно назначить возврат метода новой переменной, в таком случае.
Также принимает определенный символ в качестве параметра для заполнения оставшегося пространства.
word = 'beach' number_chars = 32 char = '$' word_justified = word.rjust(number_chars, char) print(word) #beach print(word_justified) #$$$$$$$$$$$$$$$$$$$$$$$$$$$beach
Похоже на первую ситуацию, у меня есть 27 Знаки, чтобы сделать его 32, когда я считаю 5 символов, содержащихся в словом «Beach».
Шаблоны и новая методика форматирования строк
Этот метод был добавлен в 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.Х о
Unicode
Python поддерживает Unicode так как по дефолту в нём используется UTF-8
Это позволяет использовать юникод символы без заморочек
>>> «Pythonia voi käyttää myös vaativassa ja tieteellisessä»
‘Pythonia voi käyttää myös vaativassa ja tieteellisessä’
Если бы поддержки не было скорее всего пришлось бы заменять специальные символы, такие как умлауты, на из юникод представление
>>> «Pythonia voi k\u00e4ytt\u00e4\u00e4 my\u00f6s vaativassa ja tieteellisess\u00e4»
‘Pythonia voi käyttää myös vaativassa ja tieteellisessä’
Можно получить юникод символы и другими способами
‘\xe4’
‘ä’
Использование цикла for для поиска длины строки в python
Строка может быть легко и непосредственно повторена в цикле for. Поддерживая подсчет количества итераций, вы получите длину строки.
# Python code to demonstrate string length # using for loop # Returns length of string def findLength(str): for i in str: counter return counter print(findLength(str))
выход:
Объяснение:
В этом коде мы использовали цикл for для поиска длины строки. Во-первых, мы взяли переменную str, которую мы дали ‘Latracal’ в качестве строки. Во-вторых, мы вызвали функцию findLength, в которой у нас счетчик равен 0, После чего цикл for был записан от 0 до строки, и значение счетчика за раз увеличивается на 1. Наконец, мы напечатали значение счетчика.
Создает строку из списка строк.
Описание:
Метод возвращает строку, которая является конкатенацией (объединением) всех элементов строк итерируемого объекта .
В итоговой строке элементы объединяются между собой при помощи строки-разделителя .
Если в последовательности есть какие-либо НЕ строковые значения, включая байтовые строки , то поднимается исключение .
Примеры создания строки из списка строк.
>>> 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) # Состав корзины покупателя: # - картошка # - морковь # - лук # - чеснок # - свекла
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 ❯
Присоединяйтесь к (): Как присоединиться к элементам элементами для одной строки в Python
Используйте Способ присоединиться к всем элементам, если в строку.
Основной синтаксис:
Согласно синтаксису выше, строка требуется в качестве сепаратора.
Способ возвращает новую строку, что означает, что оригинальный итератор остается неизменным.
Так как Способ принимает только строки, если какой-либо элемент в Iterable имеет другой тип, ошибка будет брошена.
Давайте посмотрим некоторые примеры с: строка, список, кортеж, набор и словарь
Присоединиться (): строки
Метод ставит Знак как сепаратор для каждого символа в строке.
my_string = 'beach' print('$'.join(my_string)) #output: b$e$a$c$h
Присоединяйтесь (): списки
У меня простой список трех предметов, представляющих автомобильные бренды.
Метод будет использовать Знак как сепаратор.
Он объединяет все предметы в списке и ставит знак между ними.
my_list = print('$'.join(my_list)) #output: bmw$ferrari$mclaren
Этот пример напоминает вам, что не работает со строковыми элементами.
При попытке объединить Элементы, ошибка поднимается.
my_list = print('$'.join(my_list)) #output: #Traceback (most recent call last): # File "", line 1, in #TypeError: sequence item 0: expected str instance, int found
Присоединиться (): кортежи
Текет следует за тем же обоснованным, поскольку пример списка объясняется ранее.
Опять же, я использую Знак как сепаратор.
my_tuple = ('bmw', 'ferrari', 'mclaren') print('$'.join(my_tuple)) #output: bmw$ferrari$mclaren
Присоединиться (): наборы
Поскольку набор также такой же, как кортеж и список, я использовал другой сепаратор в этом примере.
my_set = {'bmw', 'ferrari', 'mclaren'} print('|'.join(my_set)) #output: ferrari|bmw|mclaren
Присоединиться (): словари
Словарь имеет пойму при использовании Способ: он присоединяется к ключам, а не значения.
В этом примере показано конконтрация клавиш.
my_dict = {'bmw': 'BMW I8', 'ferrari': 'Ferrari F8', 'mclaren': 'McLaren 720S'} print(','.join(my_dict)) #output: bmw,ferrari,mclaren
А форматирование строк?
Типичная жизненная необходимость — сформировать строку, подставив в неё результат работы программы. Начиная с Python 3.6, это можно делать при помощи f-строк:
В более старом коде можно встретить альтернативные способы
Технически можно было обойтись склейкой, но это менее элегантно, а еще придётся следить, чтобы все склеиваемые кусочки были строками. Не рекомендую:
***
Цель работодателя на собеседовании — убедиться что вы соображаете и что вы справитесь с реальными задачами. Однако погружение в реальные задачи занимает несколько недель, а время интервью ограничено. Поэтому вас ждут учебные задания, которые можно решить за 10-30 минут, а также вопросы на понимание того, как работает код. О них и поговорим в следующей части.
Произвольные выражения
Так как f-строки оцениваются по мере выражения, вы можете внести любую или все доступные выражения Python в них. Это позволит вам делать интересные вещи, например следующее:
Python
print(f»{2 * 37}»)
# Вывод: ’74’
1 2 |
print(f»{2 * 37}») # Вывод: ’74’ |
Также вы можете вызывать функции. Пример:
Python
def to_lowercase(input):
return input.lower()
name = «Eric Idle»
print(f»{to_lowercase(name)} is funny.»)
# Вывод: ‘eric idle is funny.’
1 2 3 4 5 6 7 |
defto_lowercase(input) returninput.lower() name=»Eric Idle» print(f»{to_lowercase(name)} is funny.») # Вывод: ‘eric idle is funny.’ |
Также вы можете вызывать метод напрямую:
Python
print(f»{name.lower()} is funny.»)
# Вывод: ‘eric idle is funny.’
1 2 |
print(f»{name.lower()} is funny.») # Вывод: ‘eric idle is funny.’ |
Вы даже можете использовать объекты, созданные из классов при помощи f-строки. Представим, что у вас есть следующий класс:
Python
class Comedian:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def __str__(self):
return f»{self.first_name} {self.last_name} is {self.age}.»
def __repr__(self):
return f»{self.first_name} {self.last_name} is {self.age}. Surprise!»
1 2 3 4 5 6 7 8 9 10 11 |
classComedian def__init__(self,first_name,last_name,age) self.first_name=first_name self.last_name=last_name self.age=age def__str__(self) returnf»{self.first_name} {self.last_name} is {self.age}.» def__repr__(self) returnf»{self.first_name} {self.last_name} is {self.age}. Surprise!» |
Вы могли бы сделать следующее:
Python
new_comedian = Comedian(«Eric», «Idle», «74»)
print(f»{new_comedian}»)
# Вывод: ‘Eric Idle is 74.’
1 2 3 4 |
new_comedian=Comedian(«Eric»,»Idle»,»74″) print(f»{new_comedian}») # Вывод: ‘Eric Idle is 74.’ |
Методы __str__() и __repr__() работают с тем, как объекты отображаются в качестве строк, так что вам нужно убедиться в том, что вы используете один из этих методов в вашем определении класса. Если вы хотите выбрать один, попробуйте __repr__(), так как его можно использовать вместо __str__().
Строка, которая возвращается __str__() является неформальным строковым представлением объекта и должна быть читаемой. Строка, которую вернул __str__() — это официальное выражение и должно быть однозначным. При вызове str() и repr(), предпочтительнее использовать __str__() и __repr__() напрямую.
По умолчанию, f-строки будут использовать __str__(), но вы должны убедиться в том, что они используют __repr__(), если вы включаете флаг преобразования !r:
Python
print(f»{new_comedian}»)
# Вывод: ‘Eric Idle is 74.’
print(f»{new_comedian!r}»)
# Вывод: ‘Eric Idle is 74. Surprise!’
1 2 3 4 5 |
print(f»{new_comedian}») # Вывод: ‘Eric Idle is 74.’ print(f»{new_comedian!r}») # Вывод: ‘Eric Idle is 74. Surprise!’ |
Если вы хотите прочитать часть обсуждения, в результате которого f-strings поддерживают полные выражения Python, вы можете сделать это здесь.
Python string length
The method calculates the number of characters
in a string. The white characters are also counted.
string_length.py
#!/usr/bin/env python # string_length.py s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3))
We compute the length of three strings.
s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle "
Three strings are defined. The second string has a new line character at
its end. The third has two additional space characters.
print(len(s1))
We print the number of characters to the console.
$ ./length.py 5 6 7
From the output we can see that the white spaces (new line character and space
characters in our case) are counted, too.
Строковые функции, методы и операторы
Строки являются последовательностями, а последовательности в языке Python образуют целый класс типов данных, который объединяет наличие общих свойств, а следовательно, общих функций и операторов. Например списки – это последовательности объектов, доступ к которым так же осуществляется по их индексу:
Списки, так же как и строки могут «складываться» (соединяться) и «умножаться» (дублироваться):
Для определения длины строк, списков и прочих последовательностей, можно воспользоваться функцией :
Операторы и позволяют выяснить наличие или отсутствие в последовательности некоторого элемента:
С помощью оператора можно осуществлять перебор всех элементов любой последовательности в цикле :
Поскольку работа с текстовыми данными занимает значительную часть повседневной деятельности, то неудивительно, что строки обзавелись большим количеством встроенных методов, которые позволяют выполнять самые распространенные действия над ними. Вот лишь малая часть этих методов:
Что бы посмотреть на список всех доступных строкам функций и методов достаточно передать функции какой-нибудь строковый объект:
Мы не спроста, воспользовались модулем так как простая команда привела бы к выводу длинного списка в виде одной длинной строки. Имейте ввиду, что данный модуль может оказаться очень полезным для организации удобочитаемого вывода данных и в некоторых ситуациях, гораздо проще воспользоваться именно им, чем ломать голову над форматированием строки для удобочитаемого вывода.
Основы строки Python
Тип является одним из наиболее распространенных типов и часто называют строка Или, в Python, просто
my_city = "New York" print(type(my_city)) #Single quotes have exactly #the same use as double quotes my_city = 'New York' print(type(my_city)) #Setting the variable type explicitly my_city = str("New York") print(type(my_city))
Как объединять строки
Вы можете использовать Оператор к объединенным строкам.
ConcateNation – это когда у вас есть две или более строки, и вы хотите присоединиться к ним в один.
word1 = 'New ' word2 = 'York' print(word1 + word2)
New York
Как выбрать CHAR
Чтобы выбрать CHAR, используйте и укажите положение CHAR.
Положение 0 относится к первой позиции.
>>> word = "Rio de Janeiro" >>> char=word >>> print(char) R
Функция возвращает длину строки.
>>> len('Rio') 3 >>> len('Rio de Janeiro') 14
Как заменить часть строки
Способ заменяет часть строки другой. В качестве примера давайте заменим «Рио» на «Мар».
>>> 'Rio de Janeiro'.replace('Rio', 'Mar') 'Mar de Janeiro'
Рио означает реку на португальском и Мар означает море – просто так вы знаете, что я не выбрал эту замену так случайно.
Как считать
Укажите, что рассчитывать как аргумент.
В этом случае мы считаем, сколько пробелов существует в «Рио-де-Жанейро», который является 2.
>>> word = "Rio de Janeiro" >>> print(word.count(' ')) 2
Как повторить строку
Вы можете использовать Символ, чтобы повторить строку.
Здесь мы умножаем слово «Токио» на 3.
>>> words = "Tokyo" * 3 >>> print(words) TokyoTokyoTokyo
Скорость
Буква f в f-strings может также означать и “fast”. Наши f-строки заметно быстрее чем % и () форматирования. Как мы уже видели, f-строки являются выражениями, которые оцениваются по мере выполнения, а не постоянные значения. Вот выдержка из документации:
Во время выполнения, выражение внутри фигурных скобок оценивается в собственной области видимости Python и затем сопоставляется со строковой литеральной частью f-строки. После этого возвращается итоговая строка. В целом, это все.
Рассмотрим сравнение скорости:
Python
>>> import timeit
>>> timeit.timeit(«»»name = «Eric»
… age = 74
… ‘%s is %s.’ % (name, age)»»», number = 10000)
0.003324444866599663
1 2 3 4 5 6 |
>>>importtimeit >>>timeit.timeit(«»»name = «Eric» … age = 74 … ‘%s is %s.’ % (name, age)»»»,number=10000) |
Python
>>> timeit.timeit(«»»name = «Eric»
… age = 74
… ‘{} is {}.’.format(name, age)»»», number = 10000)
0.004242089427570761
1 2 3 4 5 |
>>>timeit.timeit(«»»name = «Eric» … age = 74 … ‘{} is {}.’.format(name, age)»»»,number=10000) |
Python
>>> timeit.timeit(«»»name = «Eric»
… age = 74
… f'{name} is {age}.'»»», number = 10000)
0.0024820892040722242
1 2 3 4 5 |
>>>timeit.timeit(«»»name = «Eric» … age = 74 … f'{name} is {age}.'»»»,number=10000) |
Как вы видите, f-строки являются самыми быстрыми.
Однако, суть не всегда в этом. После того, как они реализуются первыми, у них есть определенные проблемы со скоростью и их нужно сделать быстрее, чем str.format(). Для этого был предоставлен специальный опкод BUILD_STRING.
bytes
>>> s = ‘abc’
>>> bytes(s, ‘utf-8’)
b’abc’
>>> s = ‘абв’
>>> bytes(s, ‘utf-8’)
b’\xd0\xb0\xd0\xb1\xd0\xb2′
а — \xd0\xb0
б — \xd0\xb1
в — \xd0\xb2
>>> s = ‘ä’
>>> bytes(s, ‘utf-8’)
b’\xc3\xa4′
ä — \xc3\xa4
>>> s = ‘абв’
>>> b = bytes(s, ‘utf-8’)
print(b)
b’\xd0\xb0\xd0\xb1\xd0\xb2′
>>> str(b)
Получится не совсем то, что нужно
«b’\xd0\xb0\xd0\xb1\xd0\xb2′»
А вот если добавить правильную кодировку, то абв снова появятся
>>> str(b, ‘utf-8’)
‘абв’
Указав неправильную кодировку можно получить какой-то неправильный результат
>>> str(b, ‘cp1251’)
‘абв’
Указав опцию b можно посмотреть содержимое файла, например изображения
>>> file = «/home/andrei/image.png»
>>> f = open(file, ‘rb’)
>>> f.read()
b’\x89PNG\r\n…
Подробнее в статье
Как обрабатывать многослойные строки в Python
Тройные цитаты
Чтобы обрабатывать многослойные струны в Python, вы используете тройные цитаты, либо одиноки, либо двойные.
Этот первый пример использует двойные кавычки.
long_text = """This is a multiline, a long string with lots of text, I'm wrapping it in triple quotes to make it work.""" print(long_text) #output: #This is a multiline, # #a long string with lots of text, # #I'm wrapping it in triple quotes to make it work.
Сейчас так же, как и раньше, но с одиночными цитатами:
long_text = '''This is a multiline, a long string with lots of text, I'm wrapping it in triple quotes to make it work.''' print(long_text) #output: #This is a multiline, # #a long string with lots of text, # #I'm wrapping it in triple quotes to make it work.
Обратите внимание, что оба выхода одинаковы
Круглые скобки
Давайте посмотрим пример с круглыми скобками.
long_text = ("This is a multiline, " "a long string with lots of text " "I'm wrapping it in brackets to make it work.") print(long_text) #This is a multiline, a long string with lots of text I'm wrapping it in triple quotes to make it work.
Как видите, результат не то же самое. Для достижения новых строк я должен добавить , как это:
long_text = ("This is a multiline, \n\n" "a long string with lots of text \n\n" "I'm wrapping it in brackets to make it work.") print(long_text) #This is a multiline, # #a long string with lots of text # #I'm wrapping it in triple quotes to make it work.
Вершины
Наконец, обратные косания также являются возможностью.
Уведомление нет места после персонаж, как он бросил бы ошибку.
long_text = "This is a multiline, \n\n" \ "a long string with lots of text \n\n" \ "I'm using backlashes to make it work." print(long_text) #This is a multiline, # #a long string with lots of text # #I'm wrapping it in triple quotes to make it work.
Методы строк
Строка является объектом в Python. Фактически, все, что есть в Python – является объектом. Если вы хотите узнать больше об Объектно-ориентированном программирование, мы рассмотрим это в другой статье «Классы в Python«. В данный момент достаточно знать, что строки содержат собственные встроенные методы. Например, допустим, у вас есть следующая строка:
Python
my_string = «This is a string!»
1 | my_string=»This is a string!» |
Теперь вам нужно сделать так, чтобы вся эта строка была в верхнем регистре. Чтобы сделать это, все, что вам нужно, это вызвать метод upper(), вот так:
Python
my_string.upper()
1 | my_string.upper() |
Если вы открыли ваш интерпретатор, вы также можете сделать то же самое:
Python
«This is a string!».upper()
1 | «This is a string!».upper() |
Существует великое множество других методов строк. Например, если вам нужно, что бы все было в нижнем регистре, вам нужно использовать метод lower(). Если вы хотите удалить все начальные и конечные пробелы, вам понадобится метод strip(). Для получения списка всех методов строк, впишите следующую команду в ваш интерпретатор:
Python
dir(my_string)
1 | dir(my_string) |
Вы увидите что-то на подобие этого:
Python
1 |
‘__add__’,‘__class__’,‘__contains__’,‘__delattr__’,‘__doc__’,‘__eq__’,‘__format__’, ‘__ge__’,‘__getattribute__’,‘__getitem__’,‘__getnewargs__’,‘__getslice__’,‘__gt__’, ‘__hash__’,‘__init__’,‘__le__’,‘__len__’,‘__lt__’,‘__mod__’,‘__mul__’,‘__ne__’, ‘__new__’,‘__reduce__’,‘__reduce_ex__’,‘__repr__’,‘__rmod__’,‘__rmul__’,‘__- setattr__’,‘__sizeof__’,‘__str__’,‘__subclasshook__’,‘_formatter_field_name_split’, ‘_formatter_parser’,‘capitalize’,‘center’,‘count’,‘decode’,‘encode’,‘endswith’,‘expandtabs’, ‘find’,‘format’,‘index’,‘isalnum’,‘isalpha’,‘isdigit’,‘islower’,‘isspace’, ‘istitle’,‘isupper’,‘join’,‘ljust’,‘lower’,‘lstrip’,‘partition’,‘replace’,‘rfind’,‘rindex’, ‘rjust’,‘rpartition’,‘rsplit’,‘rstrip’,‘split’,‘splitlines’,‘startswith’,‘strip’,‘swapcase’, ‘title’,‘translate’,‘upper’,‘zfill’ |
Вы можете спокойно игнорировать методы, которые начинаются и заканчиваются двойным подчеркиванием, например __add__. Они не используются в ежедневном программировании в Python
Лучше обратите внимание на другие. Если вы хотите узнать, что делает тот или иной метод, просто обратитесь к справке. Например, если вы хотите узнать, зачем вам capitalize, впишите следующее, чтобы узнать:
Например, если вы хотите узнать, зачем вам capitalize, впишите следующее, чтобы узнать:
Python
help(my_string.capitalize)
1 | help(my_string.capitalize) |
Вы получите следующую информацию:
Python
Help on built-in function capitalize:
capitalize(…)
S.capitalize() -> string
Выдача копии строки S только с заглавной буквой.
1 |
Help on built-in function capitalize: capitalize(…) S.capitalize() -> string Выдача копии строки S только с заглавной буквой. |
Вы только что узнали кое-что о разделе, под названием интроспекция. Python может исследовать все свои объекты, что делает его очень легким в использовании. В основном, интроспекция позволяет вам спрашивать Python о нём. Вам моет быть интересно, как сказать о том, какой тип переменной был использован (другими словами int или string). Вы можете спросить об этом у Python!
Python
type(my_string) # <type ‘str’>
1 | type(my_string)# <type ‘str’> |
Как вы видите, тип переменной my_string является str!
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 f-строки: особенности использования
Теперь, когда вы узнали все о том, почему f-строки великолепны, я уверен, что вы захотите начать их использовать. Вот несколько деталей, о которых нужно помнить, когда вы отправляетесь в этот дивный новый мир.
Кавычки
Вы можете использовать различные типы кавычек внутри выражений. Просто убедитесь, что вы не используете кавычки того же типа на внешней стороне f-строки, которые вы используете в выражении.
Этот код будет работать:
>>> f"{'Eric Idle'}" 'Eric Idle'
Этот код также будет работать:
>>> f'{"Eric Idle"}' 'Eric Idle'
Вы также можете использовать тройные кавычки:
>>> f"""Eric Idle""" 'Eric Idle'
>>> f'''Eric Idle''' 'Eric Idle'
Если вам нужно использовать одинаковый тип кавычки как внутри, так и снаружи строки, вы можете сделать это с помощью \:
>>> f"The \"comedian\" is {name}, aged {age}." 'The "comedian" is Eric Idle, aged 74.'
Словари
Говоря о кавычках, следите, когда вы работаете со словарями. Если вы собираетесь использовать одинарные кавычки для ключей словаря, то не забудьте убедиться, что вы используете двойные кавычки для f-строк, содержащих ключи.
>>> comedian = {'name': 'Eric Idle', 'age': 74} >>> f"The comedian is {comedian}, aged {comedian}." The comedian is Eric Idle, aged 74.
Пример с синтаксической ошибкой:
>>> 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
Если вы используете тот же тип кавычки вокруг ключей словаря, что и на внешней стороне f-строки, то кавычка в начале первого ключа словаря будет интерпретироваться как конец строки.
Фигурные скобки
Чтобы в скобках появилась скобка, вы должны использовать двойные скобки:
>>> f"`74`" '{74}'
Обратите внимание, что использование тройных скобок приведет к тому, что в вашей строке будут только одиночные скобки:
>>> f"{`74`}" '{74}'
Тем не менее, вы можете получить больше фигурных скобок, если вы используете больше, чем тройные фигурные скобки:
>>> f"{{`74`}}" '`74`'
Обратный слеш
Как вы видели ранее, вы можете использовать обратные слэши в строковой части f-строки. Однако вы не можете использовать обратную косую черту для экранирования части выражения f-строки:
>>> f"{\"Eric Idle\"}" File "<stdin>", line 1 f"{\"Eric Idle\"}" ^ SyntaxError: f-string expression part cannot include a backslash
Вы можете обойти это, предварительно посчитав выражение и используя результат в f-строке:
>>> name = "Eric Idle" >>> f"{name}" 'Eric Idle'
Выражения не должны содержать комментарии, использующие символ #. Используя это вы получите синтаксическую ошибку:
>>> 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 '#'