Форматирование строк в Python не работает должным образом - PullRequest
1 голос
/ 16 января 2012

Я строю строку с помощью следующего:

pagination +='<li>''<a href="/main/?page=%(current_link)s'+link+'">%(current)s</a></li>' % \
                     {'current_link': current_link, 'current': current_link}

При просмотре страницы в браузере текст отображается нормально, но ссылка указывает на "..% (current_link) s ...". Я попытался присвоить им имена «current_link» в самой строке, но это не сработало, поэтому я попробовал подход выше.

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 16 января 2012

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

Попробуйте это так:

pagination +='<li><a href="/main/?page=%(current_link)s>%(current)s</a></li>' % \
                     {'current_link': current_link, 'current': current_link}

Или если вы намеревались использовать переменную link следующим образом:

pagination +='<li><a href="/main/?page=%(current_link)s%(link)s>%(current)s</a></li>' % \
                     {'link': link, 'current_link': current_link, 'current': current_link}
1 голос
/ 16 января 2012

Hm.Вы смешиваете конкатенацию с + и форматирование с %, и я думаю, что это вопрос приоритета оператора: % связывает сильнее, чем +, поэтому

("%(a)s" + "%(b)s" % { 'a': 'A', 'b': 'B' }) == '%(a)sB'
0 голосов
/ 16 января 2012

Не объединяйте строки набивки без оператора ('foo''bar'), конкатенируя с + и форматируя с %.Вы только форматируете последнюю строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...