Ответ 1
Вы можете избежать% в %20, например:
print "Hello%%20World%s" %"!"
или вы можете попробовать использовать подпрограммы форматирования строк, например:
print "Hello%20World{0}".format("!")
Это работает:
print "Hello World%s" %"!"
Но это не
print "Hello%20World%s" %"!"
ошибка ValueError: unsupported format character 'W' (0x57) at index 8
Я использую Python 2.7.
Зачем мне это делать? Ну %20
используется вместо пробелов в URL-адресах, и если его использовать, я не могу создавать строки с форматами printf. Но почему Python делает это?
Вы можете избежать% в %20, например:
print "Hello%%20World%s" %"!"
или вы можете попробовать использовать подпрограммы форматирования строк, например:
print "Hello%20World{0}".format("!")
Вы можете избежать% с другим%, поэтому %%20
Это аналогичный вопрос Форматирование строки Python, когда строка содержит "% s" ; без экранирования
У вас может быть опечатка.. В моем случае я говорил% w, где я хотел сказать% s.
Хорошо, почему у вас есть %20
url-quoting escapes в строке форматирования на первом месте? В идеале вы должны сначала форматировать интерполяцию:
formatting_template = 'Hello World%s'
text = '!'
full_string = formatting_template % text
Затем вы указываете URL-адрес:
result = urllib.quote(full_string)
Это лучше, потому что он цитирует все ваши строки, связанные с URL, в вашей строке, включая материал, который находится в части text
.
Я использовал интерполяцию Python и забыл символ окончания s
:
a = dict(foo='bar')
print("What comes after foo? %(foo)" % a) # Should be %(foo)s
Смотреть эти опечатки.