Основы ввода и вывод данных

The Placeholders

The placeholders can be identified using named indexes
, numbered
indexes , or even empty placeholders
.

Example

Using different placeholder values:

txt1 = «My
name is {fname}, I’m {age}».format(fname = «John», age = 36)txt2 = «My
name is {0}, I’m {1}».format(«John»,36)txt3 = «My
name is {}, I’m {}».format(«John»,36)

Formatting Types

Inside the placeholders you can add a formatting type to format the
result:

Try it Left aligns the result (within the available space)
Try it Right aligns the result (within the available space)
Try it Center aligns the result (within the available space)
Try it Places the sign to the left most position
Try it Use a plus sign to indicate if the result is positive or negative
Try it Use a minus sign for negative values only
Try it Use a space to insert an extra space before positive numbers (and a minus sign
before negative numbers)
Try it Use a comma as a thousand separator
Try it Use a underscore as a thousand separator
Try it Binary format
Converts the value into the corresponding unicode character
Try it Decimal format
Try it Scientific format, with a lower case e
Try it Scientific format, with an upper case E
Try it Fix point number format
Try it Fix point number format, in uppercase format (show
and
as
and )
General format
General format (using a upper case E for scientific notations)
Try it Octal format
Try it Hex format, lower case
Try it Hex format, upper case
Number format
Try it Percentage format

Шаг 1. Загрузить набор данных в Python

Первое, что вам нужно сделать — импортировать библиотеки для предварительной обработки. Существует множество библиотек, но наиболее популярными и важными в целях работы с данными являются NumPy, Matplotlib и Pandas.

NumPy — это библиотека, используемая для математических вещей. Пандас — лучший инструмент импорта и управления наборами данных.Matplotlib — это библиотека создания графики.

Для реализации библиотек вы можете использовать псевдоним, это общий способ сделать сие. Нужно выполнить сей шаг, вам просто надо ввести следующее в свой код:

С помощью этого простого кода в вашей программе вы сейчас можете использовать библиотеки в вашем проекте.

Загрузка данных в Пандас

В последствии того, как вы загрузили свой набор данных и назвали его файлом.csv, вам нужно будет загрузить его в DataFrame Pandas, чтобы изучить его и выполнить некоторые основные задачи очистки, удалив информацию, которая вам не нужна, что замедлит обработку.

Обычно эти задачи включают в себя:

Удалить первую строку, иногда содержит странный текст вместо заголовков столбцов. Текущий текст предотвращает правильный анализ набора данных библиотекой Пандас. Если нужно удалить эту информацию, вы можете реализовать следующий код:

Удалить столбцы с текстовыми объяснениями, которые нам не понадобятся, столбцы url и другие ненужные столбцы. Код выполнения выглядит следующим образом:

Где находится “url”, вы можете заключить столбец, который хотите удалить.

Удалить все столбцы с одним значением с более чем 50% отсутствующих значений, делаем дабы работать быстрее

Обратите внимание на это, если набор данных достаточно велик, чтобы он оставался значимым. Код, который вы должны реализовать, выглядит следующим образом:

 Также рекомендуется называть обработанный набор по-разному, дабы держать его отдельно от необработанных данных. Гарантирует, что у вас все еще есть исходные, если вам нужно вернуться к ним.

Стилевое оформление

Для настройки шрифтов, используемых в ячейках, необходимо импортировать функцию из модуля :

from openpyxl.styles import Font

Ниже приведен пример создания новой рабочей книги, в которой для шрифта, используемого в ячейке , устанавливается шрифт , красный цвет, курсивное начертание и размер 24 пункта:

import openpyxl
from openpyxl.styles import Font

# создаем новый excel-файл
wb = openpyxl.Workbook()
# добавляем новый лист
wb.create_sheet(title = 'Первый лист', index = )
# получаем лист, с которым будем работать
sheet = wb'Первый лист'

font = Font(name='Arial', size=24, italic=True, color='FF0000')
sheet'A1'.font = font
sheet'A1' = 'Здравствуй мир!'

# записываем файл
wb.save('example.xlsx')

Именованные стили применяются, когда надо применить стилевое оформление к большому количеству ячеек.

import openpyxl
from openpyxl.styles import NamedStyle, Font, Border, Side

# создаем новый excel-файл
wb = openpyxl.Workbook()
# добавляем новый лист
wb.create_sheet(title = 'Первый лист', index = )
# получаем лист, с которым будем работать
sheet = wb'Первый лист'

# создаем именованный стиль
ns = NamedStyle(name='highlight')
ns.font = Font(bold=True, size=20)
border = Side(style='thick', color='000000')
ns.border = Border(left=border, top=border, right=border, bottom=border)

# вновь созданный именованный стиль надо зарегистрировать
# для дальнейшего использования
wb.add_named_style(ns)

# теперь можно использовать именованный стиль
sheet'A1'.style = 'highlight'

# записываем файл
wb.save('example.xlsx')

Повторите список в Python С Помощью Модуля Numpy

Третий способ перебора списка в Python – это использование модуля Numpy. Для достижения нашей цели с помощью этого метода нам нужны два метода numpy, которые упоминаются ниже:

  1. numpy.nditer()
  2. numpy.arange()

Iterator object nditer предоставляет множество гибких способов итерации по всему списку с помощью модуля numpy. Функция href=”http://numpy.org/doc/stable/reference/generated/numpy.nditer.html”>nditer() – это вспомогательная функция, которая может использоваться от очень простых до очень продвинутых итераций. Это упрощает некоторые фундаментальные проблемы, с которыми мы сталкиваемся в итерации. href=”http://numpy.org/doc/stable/reference/generated/numpy.nditer.html”>nditer() – это вспомогательная функция, которая может использоваться от очень простых до очень продвинутых итераций. Это упрощает некоторые фундаментальные проблемы, с которыми мы сталкиваемся в итерации.

Нам также нужна другая функция для перебора списка в Python с помощью numpy, которая является numpy.arrange().numpy.arange возвращает равномерно распределенные значения в пределах заданного интервала. Значения генерируются в пределах полуоткрытого интервала [start, stop) (другими словами, интервала, включающего start, но исключающего stop).

Синтаксис:

Синтаксис numpy.nditer()

Синтаксис numpy.arrange()

  • start: Параметр start используется для предоставления начального значения массива.
  • stop: Этот параметр используется для предоставления конечного значения массива.
  • шаг: Он обеспечивает разницу между каждым целым числом массива и генерируемой последовательностью.

Объяснение

В приведенном выше примере 1 программа np.arange(10) создает последовательность целых чисел от 0 до 9 и сохраняет ее в переменной x. После этого мы должны запустить цикл for, и, используя этот цикл for и np.nditer(x), мы будем перебирать каждый элемент списка один за другим.

Пример 2:

В этом примере мы будем итерировать 2d-массив с помощью модуля numpy. Для достижения нашей цели нам здесь нужны три функции.

  1. numpy.arange()
  2. numpy.reshape()
  3. numpy.nditer()
import numpy as np
.arange(16) .reshape(4, 4) 
for x in np.nditer(a): 
	print(x)

Объяснение:

Большая часть этого примера похожа на наш первый пример, за исключением того, что мы добавили дополнительную функцию numpy.reshape(). Функция numpy.reshape() обычно используется для придания формы нашему массиву или списку. В основном на непрофессиональном языке он преобразует размеры массива-как в этом примере мы использовали функцию reshape(), чтобы сделать массив numpy 2D-массивом.

Formatter Methods

The Formatter class takes no initialization arguments:

fmt = Formatter()

The public API methods of class Formatter are as follows:

-- format(format_string, *args, **kwargs)
-- vformat(format_string, args, kwargs)

‘format’ is the primary API method. It takes a format template,
and an arbitrary set of positional and keyword arguments.
‘format’ is just a wrapper that calls ‘vformat’.

‘vformat’ is the function that does the actual work of formatting. It
is exposed as a separate function for cases where you want to pass in
a predefined dictionary of arguments, rather than unpacking and
repacking the dictionary as individual arguments using the *args and
**kwds syntax. ‘vformat’ does the work of breaking up the format
template string into character data and replacement fields. It calls
the ‘get_positional’ and ‘get_index’ methods as appropriate (described
below.)

Formatter defines the following overridable methods:

-- get_value(key, args, kwargs)
-- check_unused_args(used_args, args, kwargs)
-- format_field(value, format_spec)

‘get_value’ is used to retrieve a given field value. The ‘key’ argument
will be either an integer or a string. If it is an integer, it represents
the index of the positional argument in ‘args’; If it is a string, then
it represents a named argument in ‘kwargs’.

The ‘args’ parameter is set to the list of positional arguments to
‘vformat’, and the ‘kwargs’ parameter is set to the dictionary of
positional arguments.

For compound field names, these functions are only called for the
first component of the field name; subsequent components are handled
through normal attribute and indexing operations.

So for example, the field expression ‘0.name’ would cause ‘get_value’
to be called with a ‘key’ argument of 0. The ‘name’ attribute will be
looked up after ‘get_value’ returns by calling the built-in ‘getattr’
function.

If the index or keyword refers to an item that does not exist, then an
IndexError/KeyError should be raised.

‘check_unused_args’ is used to implement checking for unused arguments
if desired. The arguments to this function is the set of all argument
keys that were actually referred to in the format string (integers for
positional arguments, and strings for named arguments), and a reference
to the args and kwargs that was passed to vformat. The set of unused
args can be calculated from these parameters. ‘check_unused_args’
is assumed to throw an exception if the check fails.

‘format_field’ simply calls the global ‘format’ built-in. The method
is provided so that subclasses can override it.

To get a better understanding of how these functions relate to each
other, here is pseudocode that explains the general operation of
vformat:

def vformat(format_string, args, kwargs):

  # Output buffer and set of used args
  buffer = StringIO.StringIO()
  used_args = set()

  # Tokens are either format fields or literal strings
  for token in self.parse(format_string):
    if is_format_field(token):
      # Split the token into field value and format spec
      field_spec, _, format_spec = token.partition(":")

      # Check for explicit type conversion
      explicit, _, field_spec  = field_spec.rpartition("!")

      # 'first_part' is the part before the first '.' or ' or .subfield. Assume that 'components'
      # returns an iterator of the various subfields, not including
      # the first part.
      for comp in components(field_spec):
        value = resolve_subfield(value, comp)

      # Handle explicit type conversion
      if explicit == 'r':
        value = repr(value)
      elif explicit == 's':
        value = str(value)

      # Call the global 'format' function and write out the converted
      # value.
      buffer.write(self.format_field(value, format_spec))

    else:
      buffer.write(token)

  self.check_unused_args(used_args, args, kwargs)
  return buffer.getvalue()

Controlling Formatting on a Per-Type Basis

Each Python type can control formatting of its instances by defining
a __format__ method. The __format__ method is responsible for
interpreting the format specifier, formatting the value, and
returning the resulting string.

The new, global built-in function ‘format’ simply calls this special
method, similar to how len() and str() simply call their respective
special methods:

def format(value, format_spec):
    return value.__format__(format_spec)

It is safe to call this function with a value of «None» (because the
«None» value in Python is an object and can have methods.)

Several built-in types, including ‘str’, ‘int’, ‘float’, and ‘object’
define __format__ methods. This means that if you derive from any of
those types, your class will know how to format itself.

The object.__format__ method is the simplest: It simply converts the
object to a string, and then calls format again:

class object:
    def __format__(self, format_spec):
        return format(str(self), format_spec)

The __format__ methods for ‘int’ and ‘float’ will do numeric formatting
based on the format specifier. In some cases, these formatting
operations may be delegated to other types. So for example, in the case
where the ‘int’ formatter sees a format type of ‘f’ (meaning ‘float’)
it can simply cast the value to a float and call format() again.

Any class can override the __format__ method to provide custom
formatting for that type:

class AST:
    def __format__(self, format_spec):
        ...

Note for Python 2.x: The ‘format_spec’ argument will be either
a string object or a unicode object, depending on the type of the
original format string. The __format__ method should test the type
of the specifiers parameter to determine whether to return a string or
unicode object. It is the responsibility of the __format__ method
to return an object of the proper type.

Скорость

Буква 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)

 
0.003324444866599663

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)

 
0.004242089427570761

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)

 
0.0024820892040722242

Как вы видите, f-строки являются самыми быстрыми.

Однако, суть не всегда в этом. После того, как они реализуются первыми, у них есть определенные проблемы со скоростью и их нужно сделать быстрее, чем str.format(). Для этого был предоставлен специальный опкод BUILD_STRING.

Погружене в f-строки

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

f-строки также поддерживают расширенное форматирование чисел:

С помощью f-строк можно форматировать дату без вызова метода strftime():

Они поддерживают базовые арифметические операции. Да, прямо в строках:

Позволяют обращаться к значениям списков по индексу:

А также к элементам словаря по ключу:

Причем вы можете использовать как строковые, так и числовые ключи. Точно также как в обычном Python коде:

Вы можете вызывать в f-строках методы объектов:

А также вызывать функции:

f-строки очень гибкий и мощный инструмент для создания самых разнообразных шаблонов.

Со всеми возможностя f-строк вы можете ознакомится в PEP498.

print() function

The print statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old print statement.

The print statement can be used in the following ways :

  • print(«Good Morning»)
  • print(«Good», <Variable Containing the String>)
  • print(«Good» + <Variable Containing the String>)
  • print(«Good %s» % <variable containing the string>)

In Python, single, double and triple quotes are used to denote a string. Most use single quotes when declaring a single character. Double quotes when declaring a line and triple quotes when declaring a paragraph/multiple lines.

Commands

print(<el_1>, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  • Use ‘file=sys.stderr’ for errors.
  • Use ‘flush=True’ to forcibly flush the stream.

Pretty Print

from pprint import pprint
pprint(<collection>, width=80, depth=None)

Levels deeper than ‘depth’ get replaced by ‘…’.

Double Quotes Use:

Example:

Output:

Python is very simple language

Single Quotes Use:

Example:

Output:

Hello

Triple Quotes Use:

Example:

Output:

Python is very Popular Language.
It is also friendly language.

Variable Use:

Strings can be assigned to variable say string1 and string2 which can called when using the print statement.

Example:

Output:

Wel come

Example:

Output:

Welcome Python

String Concatenation:

String concatenation is the «addition» of two strings. Observe that while concatenating there will be no space between the strings.

Example:

Output:

WelcomePython:

Using as String:

%s is used to refer to a variable which contains a string.

Example:

Output:

Welcome Python

Using other data types:

Similarly, when using other data types

  • %d -> Integer
  • %e -> exponential
  • %f -> Float
  • %o -> Octal
  • %x -> Hexadecimal

This can be used for conversions inside the print statement itself.

Using as Integer:

Example:

Output:

Actual Number = 15

Using as Exponential:

Example:

Output:

Exponential equivalent of the number = 1.500000e+01

Using as Float:

Example:

Output:

Float of the number = 15.000000

Using as Octal:

Example:

Output:

Octal equivalent of the number = 17

Using as Hexadecimal:

Example:

Output:

Hexadecimal equivalent of the number = f

Using multiple variables:

When referring to multiple variables parenthesis is used.

Example:

Output:

Python World :

Other Examples of Print Statement:

The following are other different ways the print statement can be put to use.

Example-1:

% is used for %d type word

Output:

Welcome to %Python language

Example-2:

\n is used for Line Break.

Output:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

Example-3:

Any word print multiple times.

Output:

-w3r-w3r-w3r-w3r-w3r

Example-4:

\t is used for tab.

Output:

Language:
        1 Python
        2 Java
        3 JavaScript

Precision Width and Field Width:

Field width is the width of the entire number and precision is the width towards the right. One can alter these widths based on the requirements.

The default Precision Width is set to 6.

Example-1:

Notice upto 6 decimal points are returned. To specify the number of decimal points, ‘%(fieldwidth).(precisionwidth)f’ is used.

Output:

5.123457

Example-2:

Notice upto 5 decimal points are returned

Output:

5.12346

Example-3:

If the field width is set more than the necessary than the data right aligns itself to adjust to the specified values.

Output:

  5.12346

Example-4:

Zero padding is done by adding a 0 at the start of fieldwidth.

Output:

000000005.12346

Example-5:

For proper alignment, a space can be left blank in the field width so that when a negative number is used, proper alignment is maintained.

Output:

 5.123457
-5.123457

Example-6:

‘+’ sign can be returned at the beginning of a positive number by adding a + sign at the beginning of the field width.

Output:

+5.123457
-5.123457

Example-7:

As mentioned above, the data right aligns itself when the field width mentioned is larger than the actually field width. But left alignment can be done by specifying a negative symbol in the field width.

Output:

5.1235   

Test your Python skills with w3resource’s quiz

Преобразование в кортежи и списки

Вы можете использовать методы  и  для преобразования переданных им значений в тип данных списка и кортежа соответственно. В Python:

  • список является изменяемой упорядоченной последовательностью элементов, заключенных в квадратные скобки .
  • кортеж является неизменяемой упорядоченной последовательностью элементов, заключенных в круглые скобки .

Преобразование в кортежи

Начнем с преобразования списка в кортеж. Поскольку кортеж — это неизменяемый тип данных, такое преобразование может способствовать существенной оптимизации наших программ. Метод возвращает «кортежную» версию переданного ему значения.

print(tuple())

Мы видим, что в результате выводится кортеж, поскольку элементы теперь заключены в круглые, а не в квадратные скобки.

Давайте используем  с переменной, представляющей список:

sea_creatures = 
print(tuple(sea_creatures))

Опять же, мы видим, что значения списка преобразуются в значения кортежа, что обозначается круглыми скобками. 

Мы можем преобразовать в кортеж не только список, но и любой итерируемый тип, включая строки:

print(tuple('Sammy'))

Строки можно преобразовывать в кортежи с помощью метода , потому что они итерируемые (их можно перебирать). Но с типами данных, которые не являются итерируемыми (пример — целые числа и числа с плавающей запятой), мы получим ошибку:

print(tuple(5000))

Можно преобразовать целое число в строку, а затем в кортеж:  . Но лучше выбрать читаемый код, а не сложные преобразования.

Преобразование в списки

Преобразование значений, особенно кортежей, в списки может быть полезно, когда вам нужно иметь изменяемую версию этого значения. Для преобразования в список используется метод . 

Давайте преобразуем кортеж в список. Будьте внимательны со скобками: одна пара для кортежа, вторая — для метода  , а третья — для метода :

print(list(('blue coral', 'staghorn coral', 'pillar coral')))

Квадратные скобки сигнализируют о том, что кортеж, переданный в метод  , преобразован в список.

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

coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)

Если мы выведем , мы получим тот же результат, что и выше.

В список можно преобразовать не только кортеж, но и строку:

print(list('shark'))

The String .format() Method: Arguments

Let’s start with a quick example to get you acquainted before you dive into more detail on how to use this method in Python to format strings. For review, here’s the first example from the previous tutorial on the :

>>>

Here, you used the string modulo operator in Python to format the string. Now, you can use Python’s string method to obtain the same result, like this:

>>>

In this example, is the string . The replacement fields are , , and , which contain numbers that correspond to the zero-based positional arguments , , and . Each positional argument is inserted into the template in place of its corresponding replacement field:

The next example uses keyword arguments instead of positional parameters to produce the same result:

>>>

In this case, the replacement fields are , , and . These fields specify keywords that correspond to the keyword arguments , , and . Each keyword value is inserted into the template in place of its corresponding replacement field:

You’ll learn more about positional and keywords arguments there in the next tutorial in this introductory series, which explores functions and argument passing. For now, the two sections that follow will show you how these are used with the Python method.

Using Formatters

Formatters work by putting in one or more replacement fields or placeholders — defined by a pair of curly braces — into a string and calling the method. You’ll pass into the method the value you want to concatenate with the string. This value will be passed through in the same place that your placeholder is positioned when you run the program.

Let’s print out a string that uses a formatter:

In the example above, we constructed a string with a pair of curly braces as a placeholder:

We then added the method and passed the value of the integer to that method. This places the value of into the string where the curly braces were:

We can also assign a variable to be equal to the value of a string that has formatter placeholders:

In this second example, we concatenated the string with the larger string, replacing the curly braces in the original string.

Formatters in Python allow you to use curly braces as placeholders for values that you’ll pass through with the method.

Форматирование чисел

Вы можете форматировать числа, используя описатель формата, указанный ниже:

Типы форматирования чисел
Тип Пример
d Десятичное целое число
c Соответствующий символ Юникода
b Двоичный формат
o Восьмеричный формат
x Шестнадцатеричный формат (нижний регистр)
X Шестнадцатеричный формат (верхний регистр)
n То же, что и d. За исключением того, что для разделителя чисел используется текущий языковой стандарт.
e Экспоненциальная запись. (строчная е)
E Экспоненциальная запись (прописная E)
f Отображает номер с фиксированной точкой (по умолчанию: 6)
F То же, что и f. За исключением того, что отображает inf как INF и nan как NAN.
g Общий формат. Округляет число до p значащих цифр. (Точность по умолчанию: 6)
G То же, что и g. За исключением переключения на «E», если число большое.
% Процент. Умножает на 100 и ставит% в конце.

Диаграммы

Модуль OpenPyXL поддерживает создание гистогорамм, графиков, а также точечных и круговых диаграмм с использование данных, хранящихся в электронной таблице. Чтобы создать диаграмму, необходимо выполнить следующие действия:

  1. создать объект на основе ячеек в пределах выделенной прямоугольной области;
  2. создать объект , передав функции объект ;
  3. создать объект Chart;
  4. дополнительно можно установить значения переменных , , , объекта , определяющих положение и размеры диаграммы;
  5. добавить объект в объект .

Объекты создаются путем вызова функции , принимающей пять аргуменов:

  1. Объект , содержащий данные диаграммы.
  2. Два целых числа, представляющих верхнюю левую ячейку выделенной прямоугольной области, в которых содержатся данные диаграммы: первое число задает строку, второе — столбец; первой строке соответствует 1, а не 0.
  3. Два целых числа, представляющих нижнюю правую ячейку выделенной прямоугольной области, в которых содержатся данные диаграммы: первое число задает строку, второе — столбец.
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# создаем новый excel-файл
wb = Workbook()
# добавляем новый лист
wb.create_sheet(title = 'Первый лист', index = )
# получаем лист, с которым будем работать
sheet = wb'Первый лист'

sheet'A1' = 'Серия 1'
# это колонка с данными
for i in range(1, 11)
    cell = sheet.cell(row = i + 1, column = 1)
    cell.value = i * i

# создаем диаграмму
chart = BarChart()
chart.title = 'Первая серия данных'
data = Reference(sheet, min_col = 1, min_row = 1, max_col = 1, max_row = 11)
chart.add_data(data, titles_from_data = True)

# добавляем диаграмму на лист
sheet.add_chart(chart, 'C2')

# записываем файл
wb.save('example.xlsx')

Аналогично можно создавать графики, точечные и круговые диаграммы, вызывая методы:

Поиск:
Excel • MS • Python • Web-разработка • Модуль

Format Strings

Format strings consist of intermingled character data and markup.

Character data is data which is transferred unchanged from the
format string to the output string; markup is not transferred from
the format string directly to the output, but instead is used to
define ‘replacement fields’ that describe to the format engine
what should be placed in the output string in place of the markup.

Brace characters (‘curly braces’) are used to indicate a
replacement field within the string:

"My name is {0}".format('Fred')

The result of this is the string:

"My name is Fred"

Braces can be escaped by doubling:

"My name is {0} :-{{}}".format('Fred')

Which would produce:

"My name is Fred :-{}"

«Голое» исключение

Есть еще один способ поймать ошибку:

Python

try:
1 / 0
except:
print(«You cannot divide by zero!»)

1
2
3
4

try

1

except

print(«You cannot divide by zero!»)

Но мы его не рекомендуем. На жаргоне Пайтона, это известно как голое исключение, что означает, что будут найдены вообще все исключения. Причина, по которой так делать не рекомендуется, заключается в том, что вы не узнаете, что именно за исключение вы выловите. Когда у вас возникло что-то в духе ZeroDivisionError, вы хотите выявить фрагмент, в котором происходит деление на ноль. В коде, написанном выше, вы не можете указать, что именно вам нужно выявить. Давайте взглянем еще на несколько примеров:

Python

my_dict = {«a»:1, «b»:2, «c»:3}

try:
value = my_dict
except KeyError:
print(«That key does not exist!»)

1
2
3
4
5
6

my_dict={«a»1,»b»2,»c»3}

try

value=my_dict»d»

exceptKeyError

print(«That key does not exist!»)

Python

my_list =

try:
my_list
except IndexError:
print(«That index is not in the list!»)

1
2
3
4
5
6

my_list=1,2,3,4,5

try

my_list6

exceptIndexError

print(«That index is not in the list!»)

В первом примере, мы создали словарь из трех элементов. После этого, мы попытались открыть доступ ключу, которого в словаре нет. Так как ключ не в словаре, возникает KeyError, которую мы выявили. Второй пример показывает список, длина которого состоит из пяти объектов. Мы попытались взять седьмой объект из индекса.

Помните, что списки в Пайтоне начинаются с нуля, так что когда вы говорите 6, вы запрашиваете 7. В любом случае, в нашем списке только пять объектов, по этой причине возникает IndexError, которую мы выявили. Вы также можете выявить несколько ошибок за раз при помощи одного оператора. Для этого существует несколько различных способов. Давайте посмотрим:

Python

my_dict = {«a»:1, «b»:2, «c»:3}

try:
value = my_dict
except IndexError:
print(«This index does not exist!»)
except KeyError:
print(«This key is not in the dictionary!»)
except:
print(«Some other error occurred!»)

1
2
3
4
5
6
7
8
9
10

my_dict={«a»1,»b»2,»c»3}

try

value=my_dict»d»

exceptIndexError

print(«This index does not exist!»)

exceptKeyError

print(«This key is not in the dictionary!»)

except

print(«Some other error occurred!»)

Это самый стандартный способ выявить несколько исключений. Сначала мы попробовали открыть доступ к несуществующему ключу, которого нет в нашем словаре. При помощи try/except мы проверили код на наличие ошибки KeyError, которая находится во втором операторе except

Обратите внимание на то, что в конце кода у нас появилась «голое» исключение. Обычно, это не рекомендуется, но вы, возможно, будете сталкиваться с этим время от времени, так что лучше быть проинформированным об этом

Кстати, также обратите внимание на то, что вам не нужно использовать целый блок кода для обработки нескольких исключений. Обычно, целый блок используется для выявления одного единственного исключения. Изучим второй способ выявления нескольких исключений:

Python

try:
value = my_dict
except (IndexError, KeyError):
print(«An IndexError or KeyError occurred!»)

1
2
3
4

try

value=my_dict»d»

except(IndexError,KeyError)

print(«An IndexError or KeyError occurred!»)

Обратите внимание на то, что в данном примере мы помещаем ошибки, которые мы хотим выявить, внутри круглых скобок. Проблема данного метода в том, что трудно сказать какая именно ошибка произошла, так что предыдущий пример, мы рекомендуем больше чем этот

Зачастую, когда происходит ошибка, вам нужно уведомить пользователя, при помощи сообщения.

В зависимости от сложности данной ошибки, вам может понадобиться выйти из программы. Иногда вам может понадобиться выполнить очистку, перед выходом из программы. Например, если вы открыли соединение с базой данных, вам нужно будет закрыть его, перед выходом из программы, или вы можете закончить с открытым соединением. Другой пример – закрытие дескриптора файла, к которому вы обращаетесь. Теперь нам нужно научиться убирать за собой. Это очень просто, если использовать оператор finally.

Итерация по Списку в Python С помощью Itertools Grouper

В этом разделе используйте itertools.zip_longest для создания группера. Grouper-это функция, с помощью которой мы можем группировать элементы списка и перебирать их. Это может быть полезно, если вы хотите повторить 2-3 элемента в каждой партии вашей итерации.

Синтаксис

iterable_object Требуемый. Последовательность списка, коллекции или объекта итератора.
считать Требуемый. Количество элементов, группируемых в пакет.
fillvalue Необязательный. Значение заполнения для заполнения пакета, если итератор закончил работу до заполнения пакета.

Пример

from itertools import zip_longest

def grouper(iterable_obj, count,):
    args =  * count
    return zip_longest(*args,)

iterable = 

for x in grouper(iterable, 1, ""):
    print(*x)

Объяснение

В этом примере мы сначала импортировали модуль zip_longest из itertools. zip_longest – это метод, который агрегирует элементы из каждой итерации. Затем мы создаем функцию grouper. Эта функция принимает итерацию в качестве аргумента и количество элементов для группировки вместе. В этом случае, поскольку мы хотим выполнить итерацию по всему списку, мы сохраним значение count равным 1. 3-й аргумент-fillvalue, этот аргумент используется для заполнения оставшихся значений, если пакет меньше, чем count.Затем мы вызовем функцию grouper get iterable. Мы будем перебирать этот итератор, чтобы получить отдельные элементы из списка.

Примечание: Не забудьте распаковать элемент с помощью*, потому что zip_longest возвращает итератор кортежей.

Заключение

Вы по-прежнему можете использовать более старые способы форматирования строк, но с f-строками у вас теперь есть более лаконичный, читаемый и удобный способ, который быстрее и менее подвержен ошибкам. Упрощение вашей жизни с помощью f-строк — отличная причина начать использовать Python 3.6, если вы еще не сделали этого. (Если вы все еще используете Python 2, не забудьте, что скоро наступит!)

Согласно Zen of Python, когда вам нужно решить, как что-то сделать, должен быть один — и предпочтительно только один — очевидный способ сделать это. Хотя f-строки не единственный возможный способ отформатировать строки, они в состоянии стать тем очевидным и единственным способом сделать эту работу.

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

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

Adblock
detector