Подтвердить что ты не робот

ValueError: символ неподдерживаемого формата при формировании строк

Это работает:

print "Hello World%s" %"!"

Но это не

print "Hello%20World%s" %"!"

ошибка ValueError: unsupported format character 'W' (0x57) at index 8

Я использую Python 2.7.

Зачем мне это делать? Ну %20 используется вместо пробелов в URL-адресах, и если его использовать, я не могу создавать строки с форматами printf. Но почему Python делает это?

4b9b3361

Ответ 1

Вы можете избежать% в %20, например:

print "Hello%%20World%s" %"!"

или вы можете попробовать использовать подпрограммы форматирования строк, например:

print "Hello%20World{0}".format("!")

http://docs.python.org/library/string.html#formatstrings

Ответ 3

У вас может быть опечатка.. В моем случае я говорил% w, где я хотел сказать% s.

Ответ 4

Хорошо, почему у вас есть %20 url-quoting escapes в строке форматирования на первом месте? В идеале вы должны сначала форматировать интерполяцию:

formatting_template = 'Hello World%s'
text = '!'
full_string = formatting_template % text

Затем вы указываете URL-адрес:

result = urllib.quote(full_string)

Это лучше, потому что он цитирует все ваши строки, связанные с URL, в вашей строке, включая материал, который находится в части text.

Ответ 5

Я использовал интерполяцию Python и забыл символ окончания s:

a = dict(foo='bar')
print("What comes after foo? %(foo)" % a) # Should be %(foo)s

Смотреть эти опечатки.