Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1200 / 769 / 128
Регистрация: 10.03.2012
Сообщений: 4,973

Метод format

26.02.2021, 21:50. Показов 1388. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю Лутца возник вопрос про метод format, наткнулся в книге на пример
Python
1
2
D = dict (name='Bob' , job='dev')
'{0 [name]} {0 [job]} {0 [name]}'. format (D)
Здесь опечатка или я что-то не правильно понимаю (перевод в книге просто муть какая-то)?
Разве вместо
Python
1
{0 [job]}
не должно быть
Python
1
{1 [job]}
Ведь при использовании метода format аргументы подставляются по позиция:
Python
1
'{0}, {1}, {2}'
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2021, 21:50
Ответы с готовыми решениями:

Метод 'xxx'.format()
Привет, ребята! :) Поставил себе задачу освоить метод .format(). Не хватает практики, чтобы набить руку. Посоветуйте, пожалуйста,...

Метод s.format в цикле for
При использовании метода format в цикле sol = for i in range(2): sol.append(float(input('sol {i}: '.format('polar angle',...

Format
age = int(input()) print('{0}'.format(age + 1)) '{0}'.format что это и какую смысл имеет писать таким способом?

19
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.02.2021, 05:21
Whitecolor, синтаксис метода format
Python
1
2
3
4
5
 str.format(*args, **kwargs) -> str 
 
args - Позиционные аргументы.
 
kwargs - Именованные аргументы.
У Вас что то непонятное.
Возможен такой вариант
Python
1
2
3
>>> D = dict (name='Bob' , job='dev')
>>> '{name} {job} {name}'. format (**D)
'Bob dev Bob'
У Вас Лутц "Изучаем питон"? Напишите какое издание, если 5-ое, то какой том, и какая страница.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
27.02.2021, 08:00
Whitecolor, метод формат практически уже не нужен, используй везде ф-строки
например:
Python
1
2
3
>>> empl={'name':'Bob', 'job':'manager'}
>>> print(f'{empl["name"]} {empl["job"]}')
Bob manager
читаемо, понятно, надо только привыкнуть к синтаксису. Вот можно посмотреть
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.02.2021, 16:28
Whitecolor, Полностью согласен с Welemir1, но одно замечание:
"Форматированные строковые литералы также известны как f-строки или форматные строки.
PEP-498
Добавлено в Python 3.6"
Поэтому, если по какой то причине (требование на работе поддерживать старую версию) вынуждены работать на старой версии питона, более ранней чем 3.6, то форматирование с помощью f-string использовать не сможете. Это замечание, что бы Вы знали.
А в принципе f-string на порядок более мощное средство форматирования.

Добавлено через 15 минут
Whitecolor, Так как книги Лутца идут с отставанием от последних версий питона, то описания формата f-string у него нет.
Вот куча материала на эту тему, в дополнение к ссылке на видео ролик, которую дал Welemir1,
https://pythonz.net/references/named/str-f/
https://pythonz.net/references... irovaniya/
https://python-scripts.com/f-strings
https://docs.python.org/3/refe... #f-strings
https://webdevblog.ru/f-stroki... iya-strok/
https://docs.python.org/3/libr... i-language
https://webdevblog.ru/novye-in... -f-strings

Добавлено через 4 минуты
Whitecolor, Ссылка на мини-язык форматирования остается актуальной. Хотя мини-язык используется методом format, он так же работает и для f-string.
1
1200 / 769 / 128
Регистрация: 10.03.2012
Сообщений: 4,973
27.02.2021, 21:06  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
У Вас Лутц "Изучаем питон"? Напишите какое издание, если 5-ое, то какой том, и какая страница.
Да, первый том, страница 261, раздел "Гибкий синтаксис ссылок: дополнительная сложность и частичное совпадение функциональности".
Как я разобрался
Python
1
dict (name='Bob' , job='dev')
здесь вводит в заблуждение dict, если бы стояло tuple сразу было бы всё ясно.
Welemir1, Viktorrus, Спасибо, я пока только изучаю Python
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.02.2021, 21:38
Whitecolor, Да, там ошибка в книге.
Python
1
'{0 [name]} {0 [job]} {0 [name]}'. format (D)
Эта строка не верна.
0
1200 / 769 / 128
Регистрация: 10.03.2012
Сообщений: 4,973
27.02.2021, 22:34  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Эта строка не верна.
Как правильно?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
28.02.2021, 11:33
Цитата Сообщение от Whitecolor Посмотреть сообщение
Здесь опечатка или я что-то не правильно понимаю (перевод в книге просто муть какая-то)?
Нельзя читать книгу и не сверять ее с документацией. Ошибки - типографские и смысловые - бывают во всех книгах.

"First, thou shalt count to {0}" # References first positional argument
"Bring me a {}" # Implicitly references the first positional argument
"From {} to {}" # Same as "From {0} to {1}"
"My quest is {name}" # References keyword argument 'name'
"Weight in tons {0.weight}" # 'weight' attribute of first positional arg
"Units destroyed: {players[0]}" # First element of keyword argument 'players'..
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> '{0}, {1}, {2}'.format(1,2,3)
'1, 2, 3'
>>> '{}, {}, {}'.format(1,2,3)
'1, 2, 3'
>>> '{one}, {two}, {three}'.format(one=1,two=2,three=3)
'1, 2, 3'
>>> class Number:
    one = 1
    two = 2
    three = 3
 
    
>>> '{0.one}, {1.two}, {2.three}'.format(Number(), Number(),Number())
'1, 2, 3'
>>>
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
28.02.2021, 12:22
Цитата Сообщение от Welemir1 Посмотреть сообщение
читаемо, понятно, надо только привыкнуть к синтаксису. Вот можно посмотреть
ранее я писал, например
Python
1
all_.append(f'{razdel_num}, {glava_num}, {statja_num}')
посмотрев видео, попробовал
Python
1
2
all_.append(f'{razdel_num=}, {glava_num=}, {statja_num=}')
print(f'{all_[0]=}')
и в итоге получаю
razdel_num='1', glava_num='2', statja_num='3'
и как мне в случае надобности получить значение statja_num?
0
1200 / 769 / 128
Регистрация: 10.03.2012
Сообщений: 4,973
28.02.2021, 19:26  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Ошибки - типографские и смысловые - бывают во всех книгах.
Здесь конечно с переводом совсем плохо
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
28.02.2021, 19:43
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
и в итоге получаю
razdel_num='1', glava_num='2', statja_num='3'
и как мне в случае надобности получить значение statja_num?
сплитом быть с разделителем апостроф, потом [-2] - 2-я с конца, или [5] 5-я с начала, так?
Python
1
val.split(f'{chr(39)}')[-2]
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
28.02.2021, 21:19
Цитата Сообщение от Whitecolor Посмотреть сообщение
Как правильно?
Python
1
2
3
>>> D = dict(name='Bob', job='dev')
>>> '{0[name]} {0[job]} {0[name]}'.format(D)
'Bob dev Bob'
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
28.02.2021, 21:36
Цитата Сообщение от Whitecolor Посмотреть сообщение
Здесь конечно с переводом совсем плохо
Читал почти всего Лутца - ни с какими особенностями перевода, которые бы не позволили что-то понять, не столкнулся.
А типографские опечатки легко выцепляются после сверки с докой.
0
1200 / 769 / 128
Регистрация: 10.03.2012
Сообщений: 4,973
28.02.2021, 22:31  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Читал почти всего Лутца - ни с какими особенностями перевода, которые бы не позволили что-то понять, не столкнулся.
Последнее 5-ое издание?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.02.2021, 22:41
Цитата Сообщение от Whitecolor Посмотреть сообщение
Здесь конечно с переводом совсем плохо
В 5-ом издании полно ошибок. В данном случае 4-ое издание перевод качественнее, но он соответствует версии питона 3.0, а пятое издание новее и соответствует версии 3.3. Вот и думайте, по какой книге учить. Я думаю учить по 5-ому изданию, но сверять с 4-ым изданием в тех местах где непонятно. Я сейчас посмотрел перевод в 4-ом издании, такой ошибки там нет. Кстати в 4-ом издании на всю книгу мне встретилось не более 6-ти ошибок. А в переводе пятого издания их полно, уже больше чем во всей книге 4-го издания, хотя я изучил пока не весь первый том 5-го издания.

Добавлено через 4 минуты
Whitecolor, Кстати в переводе 5-ого издания , я столкнулся с парой случаев, когда смысл текста перевода вводит в заблуждение (ошибочен).
Я подозреваю, что для перевода использовался машинный перевод, с последующим не качественным редактированием.
0
1200 / 769 / 128
Регистрация: 10.03.2012
Сообщений: 4,973
28.02.2021, 23:00  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
я столкнулся с парой случаев, когда смысл текста перевода вводит в заблуждение (ошибочен).
Когда что-то сложное объясняется, идет просто как набор слов
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.02.2021, 23:13
Whitecolor, Прошу извинения, в книге ошибки нет. Это показал 0x10. Это у Вас ошибка в том, что стоят пробелы, где их быть не должно. Вы видимо копировали код, а не набивали с клавиатуры. А при копировании с электронной копии книги, которая в виде картинки, часто копируется с ошибками.
А почему я ошибся, потому, что привык, что в питоне как правило лишние пробелы допускаются. Но видимо не в данном случае. И к тому же мне не совсем понятно, почему работает данный пример
Python
1
2
3
>>> D = dict(name='Bob', job='dev')
>>> '{0[name]} {0[job]} {0[name]}'.format(D)
'Bob dev Bob'
Нужно разбираться, что такое 0.
Такая запись с нулем позволяет в аргументах формат не указывать **D, тоесть не распаковывать словарь D на отдельные элементы в виде аргументов.
Я подозреваю, что здесь ноль обозначает нулевой индекс в кортеже аргументов метода format(D), где на нулевой позиции стоит D. Тогда {0[name]} обозначает значение в словаре D[name] по ключу name . То есть Bob.
Но не хочу освежать в памяти, все тонкости работы метода format , так как я уже полностью переключился на использование для форматирования f-string.
0
1200 / 769 / 128
Регистрация: 10.03.2012
Сообщений: 4,973
01.03.2021, 00:13  [ТС]
Viktorrus, Да, пример работает но как я писал выше здесь вводит в заблуждение dict, если бы стояло tuple сразу было бы яснее.
То есть вместо
Python
1
D = dict(name='Bob', job='dev')
корректнее было бы написать
Python
1
T = tuple(name='Bob', job='dev')
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
01.03.2021, 00:28
Цитата Сообщение от Whitecolor Посмотреть сообщение
корректнее было бы написать
Нет. Тогда не будет работать получение значения по ключу.
Python
1
2
3
4
5
>>> T = tuple(name='Bob', job='dev')
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    T = tuple(name='Bob', job='dev')
TypeError: tuple() takes no keyword arguments
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.03.2021, 14:11
Цитата Сообщение от Viktorrus Посмотреть сообщение
И к тому же мне не совсем понятно, почему работает данный пример
Это тоже самое что и в моем примере с классом Number, где используется порядковые номера для экземпляров классов и атрибуты класса.
Вот аналог со словарями:
Python
1
2
3
4
5
6
>>> D = dict(name='Bob', job='dev')
>>> D1 = dict(name='Bob1', job='dev1')
>>> D2 = dict(name='Bob2', job='dev2')
>>> '{0[name]} {1[job]} {2[name]}'.format(D, D1, D2)
'Bob dev1 Bob2'
>>>
Добавлено через 2 минуты
Цитата Сообщение от Whitecolor Посмотреть сообщение
корректнее было бы написать
Нет. Потому что порядковые индексы в строке форматирования могут использоваться для разных объектов. И это опять же есть в доке.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2021, 14:11
Помогаю со студенческими работами здесь

Функция format
Добрый день, не совсем понимаю как работает метод format. Как например я могу вывести такую строку : ++++ str. Т.е как задать количество +...

Не работает .format в программе
Подскажите почему в строчке print(&quot;Вам осталось спать: {0:02}:{1:02}&quot;).format(hours, minutes) не работает format import time import...

Работа с функцией format
Доброго времени суток. Нужна ваша помощь.... Нужно вывести число 2020 через 1 и 0 используя фунцию формат, есть наброски кода но он не...

Ошибка при выводе функции format
Прописал программу, в которой объявил переменную и пытаюсь ее вставить в строку с помощью функции format. (см. скрин 1) my_name =...

Функция .format вставляет между символами
M_lsN='' M_txt= for name in M_txt: M_lsN+='{}'.format('+'.join(name)) print(M_lsN) Вот что выводит: M+1 M+2 M+3 M+4 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru