python中的字符串格式不能按预期工作

时间:2012-01-16 15:02:34

标签: python string

我正在通过以下方式构建一个字符串:

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 个答案:

答案 0 :(得分:3)

问题是您已将字符串分开,使%运算符仅适用于最后一部分。

试试这样:

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 :(得分:1)

嗯。您正在将连接与+混合并使用%格式化,我认为这是运算符优先级的问题:%绑定比+强,所以

("%(a)s" + "%(b)s" % { 'a': 'A', 'b': 'B' }) == '%(a)sB'

答案 2 :(得分:0)

不要将填充字符串与没有运算符('foo''bar')组合在一起,与+连接,并使用%格式化。你只是格式化最后的字符串。