Строковая интерполяция в Python - PullRequest
0 голосов
/ 12 сентября 2011

Я пытаюсь правильно интерполировать эту строку:

/test/test?Monetization%20Source=%d&Channel%20Id=%d' % (mid, cid)

Я хочу, чтобы% 20 отображался как есть, а% d служил символом-заполнителем для переменных mid и cid.Как мне это сделать?

Ответы [ 3 ]

9 голосов
/ 12 сентября 2011

В общем, вы хотите urllib.urlencode:

import urllib
url = '/test/test?' + urllib.urlencode({
  'Monetization Source': mid,
  'Channel Id': cid,
})
2 голосов
/ 12 сентября 2011

Я предполагаю, что это константный строковый литерал?Если это так, то просто - просто удвойте знаки процента, которые вы хотите сохранить.

'/test/test?Monetization%%20Source=%d&Channel%%20Id=%d' % (mid, cid)
0 голосов
/ 12 сентября 2011

Начиная с Python 2.6, вы можете использовать мини-язык Спецификация формата , который намного мощнее, чем старый (но все еще поддерживается) оператор%.

>>> mid=4
>>> cid=6
>>> "/test/test?Monetization%20Source={0:d}&Channel%20Id={1:d}".format(mid, cid) 
'/test/test?Monetization%20Source=4&Channel%20Id=6'

Пропуск: d для целых чисел по умолчанию str ()

Начиная с Python 2.7 и 3.2, вы можете опустить индексы параметров:

>>> "...ce={:d}&Channel%20Id={:d}"...

Но смотрите руководство, методы format () и встроенная функция очень гибкие и полезные.

...