Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 4653 / 500 | Длительность: 21:48:00
Авторские права: Creative Commons Attribution 3.0
Самостоятельная работа 6:

Строки

< Самостоятельная работа 1 || Самостоятельная работа 6: 123

12.10. Разбор (parsing) строк

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

From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008

И мы хотим вытащить только вторую часть адреса (например, uct.ac.za) из каждой строки. Это можно сделать с использованием метода find и строкового среза.

Во-первых, мы находим положение at-символа (@) в строке. Затем находим позицию первого пробела после at-символа. После этого с использованием строкового среза извлекаем часть строки, которую ищем:

>>> data = 'From stephen.marquard@uct.ac.za Sat Jan 5 
09:14:16 2008'
>>> atpos = data.find('@')
>>> print atpos
21
>>> sppos = data.find(' ',atpos)
>>> print sppos
31
>>> host = data[atpos+1:sppos]
>>> print host
uct.ac.za

Мы используем версию метода find, которая позволяет нам задать позицию в строке, начиная с которой хотим выполнять поиск.

12.11. Оператор форматирования

Оператор форматирования % позволяет создавать строки, заменяя часть строки с данными, хранящимися в переменных. Когда он применяется к целым числам - это операция взятия по модулю.

Первым операндом является строка форматирования (format string), которая содержит одну или более последовательностей форматирования (format sequences), которые определяют форматирование второго оператора.

Результатом является строка.

Например, последовательность форматирования '%d' означает, что второй оператор должен быть отформатирован как целочисленное значение (d от decimal):

>>> camels = 42
>>> '%d' % camels
'42'

Результатом является строка '42', которую не следует путать с целочисленным значением 42.

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

>>> camels = 42
>>> 'I have spotted %d camels.' % camels
'I have spotted 42 camels.'

Если есть более чем одна форматируемая последовательность в строке, второй аргумент должен быть кортежем (tuple). Каждая форматируемая последовательность сочетается по порядку с элементом кортежа. В следующем примере используется '%d' форматирование для целочисленных значений, '%g' - для чисел с плавающей точкой (не спрашивайте, почему), и '%s' - для форматирования строки:

>>> 'In %d years I have spotted %g %s.' % (3, 0.1, 'camels')
'In 3 years I have spotted 0.1 camels.'

Количество элементов в кортеже должно совпадать с количеством форматируемых последовательностей в строке. Кроме того, типы элементов должны соответствовать форматируемым последовательностям:

>>> '%d %d %d' % (1, 2)
TypeError: not enough arguments for format string
>>> '%d' % 'dollars'
TypeError: illegal argument type for built-in operation

Более подробно об операторе форматирования:

docs.python.org/lib/typesseq-strings.html

12.12. Словарь

Счетчик (counter): A variable used to count something, usually initialized to zero and then incremented.

Пустая строка (empty string): A string with no characters and length 0, represented by two quotation marks.

Оператор форматирования (format operator): An operator, %, that takes a format string and a tuple and generates a string that includes the elements of the tuple formatted as specified by the format string.

Последовательность форматирования (format sequence): A sequence of characters in a format string, like %d, that specifies how a value should be formatted.

Строка форматирования (format string): A string, used with the format operator, that contains format sequences.

Флаг (flag): A boolean variable used to indicate whether a condition is true.

Вызов (invocation): A statement that calls a method.

Неизменяемый (immutable): The property of a sequence whose items cannot be assigned.

Индекс (index): An integer value used to select an item in a sequence, such as a character in a string.

Элемент (item): One of the values in a sequence.

method: A function that is associated with an object and called using dot notation.

Объект (object): Something a variable can refer to. For now, you can use "object" and "value" interchangeably.

Поиск (search): A pattern of traversal that stops when it finds what it is looking for.

Последовательность (sequence): An ordered set; that is, a set of values where each value is identified by an integer index.

Срез (slice): A part of a string specified by a range of indices.

Обход (traverse): To iterate through the items in a sequence, performing a similar operation on each.

< Самостоятельная работа 1 || Самостоятельная работа 6: 123
Ксения Шошина
Ксения Шошина

курс Программирование на Python

Илья Кизилов
Илья Кизилов

В лекции приводится программа для сортировки слов по их длинне. В коде ошибка. Я исправил так:

def sort_by_length(words):

words = words.split()

t = []

for word in words:

t.append((len(word), word))

t.sort(reverse=True)

res = []

for length, word in t:

res.append(word)

return res

print(sort_by_length(words))

 

Кто ещё как сделал?

 

Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Андрей Микульский
Андрей Микульский
Молдова, Республика, Комрат, Комратский Государственный Университет