2012-01-13 13 views
26

To działa:ValueError: nieobsługiwane Format znaków podczas tworzenia ciągów

print "Hello World%s" %"!" 

Ale to nie

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

błąd jest ValueError: unsupported format character 'W' (0x57) at index 8

Używam Pythona 2.7.

Dlaczego miałbym to zrobić? Cóż, %20 jest używany zamiast spacji w adresach URL, a jeśli go użyję, nie będę mógł tworzyć ciągów w formatach printf. Ale dlaczego robi to Python?

Odpowiedz

3

Cóż, dlaczego na pierwszym miejscu znajdują się znaki ucieczki adresu URL w ciągach formatujących %20? Idealnie chcesz zrobić interpolacji formatowania pierwszy:

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

Wtedy url zacytować go potem:

result = urllib.quote(full_string) 

To jest lepsze, ponieważ byłoby zacytować wszystko URL quotable w ciąg, w tym rzeczy, które znajduje się w części text.

2

Być może masz literówkę. W moim przypadku mówiłem% w, w którym miałem na myśli% s.

Powiązane problemy