2012-01-13 15 views
26

यह काम करता है के गठन:ValueError: असमर्थित प्रारूप चरित्र जबकि तार

print "Hello World%s" %"!" 

लेकिन यह नहीं करता है

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

त्रुटि ValueError: unsupported format character 'W' (0x57) at index 8

मैं अजगर 2.7 का उपयोग कर रहा है।

मैं ऐसा क्यों करूं? अच्छी तरह से %20 यूआरएल में रिक्त स्थान के स्थान पर उपयोग किया जाता है, और यदि इसका उपयोग होता है, तो मैं printf प्रारूपों के साथ तार नहीं बना सकता। लेकिन पाइथन ऐसा क्यों करता है?

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

या आप:

उत्तर

44

तुम इतनी तरह% से 20% में से बच सकता है इसके बजाय स्ट्रिंग स्वरूपण दिनचर्या का उपयोग करने का प्रयास करें, जैसे:

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

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

3

ठीक है, आपके पास %20 url-quoting क्यों पहले स्थान पर एक स्वरूपण स्ट्रिंग में भाग निकलता है? आदर्श रूप में आप पहली बार स्वरूपण प्रक्षेप कर चाहते हैं:

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

तो फिर तुम यह बाद में बोली यूआरएल:

result = urllib.quote(full_string) 

कि बेहतर है, क्योंकि यह आपके स्ट्रिंग में सभी यूआरएल-उद्धरण योग्य बातें बोली, सामान सहित होता है कि text भाग में है।

2

आपके पास एक टाइपो हो सकता है .. मेरे मामले में मैं% w कह रहा था जहां मेरा मतलब% s था।

संबंधित मुद्दे