2012-01-13 44 views
26

này hoạt động:ValueError: nhân vật định dạng không được hỗ trợ trong khi hình thành chuỗi

print "Hello World%s" %"!" 

Nhưng điều này không

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

lỗi là ValueError: unsupported format character 'W' (0x57) at index 8

Tôi đang sử dụng Python 2.7.

Tại sao tôi nên làm điều này? Vâng %20 được sử dụng thay cho không gian trong url, và nếu sử dụng nó, tôi không thể tạo thành chuỗi với các định dạng printf. Nhưng tại sao Python làm điều này?

Trả lời

3

Vâng, tại sao bạn có %20 thoát khỏi url-trích dẫn trong chuỗi định dạng ở vị trí đầu tiên? Lý tưởng nhất là bạn muốn làm suy định dạng đầu tiên:

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

Sau đó, bạn url trích dẫn nó sau đó:

result = urllib.quote(full_string) 

Đó là tốt hơn bởi vì nó sẽ trích dẫn tất cả mọi thứ url-dẫn chứng được trong chuỗi của bạn, bao gồm cả những thứ mà nằm trong phần text.

2

Bạn có thể có lỗi đánh máy .. Trong trường hợp của tôi, tôi đã nói% w nơi tôi muốn nói% s.

Các vấn đề liên quan