2010-07-13 12 views
127

मैं पायथन 2.6.5 का उपयोग कर रहा हूं। मेरे कोड को "अधिक से अधिक या बराबर" चिह्न के उपयोग की आवश्यकता है। यहां यह जाता है:पायथन: यूनिकोड-एस्केड स्ट्रिंग पर .format() का उपयोग

>>> s = u'\u2265' 
>>> print s 
>>> ≥ 
>>> print "{0}".format(s) 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2265' 
    in position 0: ordinal not in range(128)` 

मुझे यह त्रुटि क्यों मिलती है? क्या ऐसा करने का कोई सही तरीका है? मुझे .format() फ़ंक्शन का उपयोग करने की आवश्यकता है।

उत्तर

202

बस भी दूसरी स्ट्रिंग एक यूनिकोड स्ट्रिंग

>>> s = u'\u2265' 
>>> print s 
≥ 
>>> print "{0}".format(s) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2265' in position 0: ordinal not in range(128) 
>>> print u"{0}".format(s) 
≥ 
>>> 
+32

@Kit: यदि आप यूनिकोड होने के लिए सभी शाब्दिक चाहते हैं (जैसे अजगर 3 में), __future__ आयात unicode_literals' से अपने स्रोत फ़ाइलों की शुरुआत में डाल '। – Philipp

+1

हाँ, यह आपको प्राप्त करेगा यदि आप%% स्वरूपण के रूप में% स्वरूपण के रूप में उपयोग करते हैं, लेकिन "{}" प्रारूप (u "\ u2265") अपवाद फेंक देगा। – Hylidan

+1

क्या एक साधारण बात है .. मुझे तब तक एक भयानक सिरदर्द मिला जब तक मुझे यह ज्ञान नहीं मिला .. –

54

unicode रों जरूरत unicode प्रारूप तार बनाते हैं।

>>> print u'{0}'.format(s) 
≥ 
संबंधित मुद्दे