Сообщение об ошибке с использованием нескольких замен строк %s

Мне не удалось найти другой пример подстановки строк, как в этом сообщении об ошибке, где %s%s удваивается, как здесь: https://github.com/django/django/blob/387475c5b2f1aa32103dbe21cb281d3b35165a0c/django /contrib/gis/utils/layermapping.py#L260

%s%s и последующие одиночные %s приводят к разным значениям, когда я запускаю код, который вызывает эту ошибку. Ищем объяснение двойного использования.

вот связанный код:

raise LayerMapError(
    "Invalid mapping geometry; model has %s%s, "
    "layer geometry type is %s."
    % (fld_name, "(dim=3)" if coord_dim == 3 else "", ltype)
                    )

🤔 А знаете ли вы, что...
В Python есть инструменты для тестирования кода, такие как библиотека unittest.


51
1

Ответ:

Решено

В так называемом «двойнике» %s нет ничего особенного. У вас просто есть строка с тремя заменами %s (обратите внимание, что это многострочная строка, хотя это несущественно) и тремя значениями для замены:

  1. fld_name
  2. Выражение "(dim=3)" if coord_dim == 3 else ""
  3. ltype

Тот факт, что между первыми двумя %s нет места (или чего-то еще) этого не меняет.


Интересные вопросы для изучения

Должны ли классы аутентификации и классы разрешений в представлениях Django REST Framework определяться с помощью списков или кортежей?Есть ли сценарий, в котором `foo in list(bar)` нельзя заменить на `foo in bar`?Выполняется ли простое задание в Python дважды?Итерация (или нет?) параметров для matplotlib для построения функции в PythonУстановка ограничения рекурсии не работает в автономном интерпретаторе Python, но работает в онлайн-интерпретаторахЕсть ли способ сократить этот код до двух строк, а может и до трех?OpenCV не читает изображение, даже если путь правильный, строка кажется пустой (imread_(''): невозможно открыть/прочитать файл: проверьте путь/целостность файла)Как уловить повторяющийся шаблон с помощью регулярного выражения в строке?Скрипт Python читает LF без CR в текстовом файле и заменяет другим символомПримените строку. присоединиться к Dictionary<string, List<int>>