Nick2009
Фев. 17, 2010 12:11:30
Необходимо получить такую строку “'%%значение%%'”
Входные/выходные значения unicode
В этих двух вариантах получаются разные результаты.
y = “”.join() - работает правильно
y = “'%%%s%%'” % x - работает не правильно
Второй вариант нравится больше, но с ним проблемы.
Как правильно, с синтаксической точки зрения, выполнять такое форматирование?
Mutagena
Фев. 17, 2010 13:43:17
Попробуйте использовать вместо % соответствующий символ юникода в формате \uhhhh.
И кстати, не в ту ветку форума пишите :)
Nik
Фев. 17, 2010 14:14:07
>>> print "%%%%%s%%%%" % "значение"
%%значение%%
Никаких проблем… Каждый % необходимо просто удваивать.
Ed
Фев. 17, 2010 14:18:00
Чтобы получить один % используйте два в строке форматирования.
Вот этот код выводит 2 одинаковые строки:
#!/usr/bin/python
# coding=utf8
x = "значение"
y = "'%%%%%s%%%%'" % x
print y
y = "".join(["'%%",x,"%%'"])
print y
Nick2009
Фев. 17, 2010 14:40:34
Nik
>>> print "%%%%%s%%%%" % "значение"
%%значение%%
Никаких проблем… Каждый % необходимо просто удваивать.
Опс! Спасибо. Не доглядел. Эта строка потом поступает в джанговскую функцию, которая внутри тоже пытается ее форматировать. Я удвоил один раз и успокоился, а нужно было удваивать символ столько раз через сколько вызовов форматирования он проходит.