2010-07-09 21 views
44

मैं एक स्ट्रिंग में ° (डिग्री) वर्ण कैसे प्राप्त कर सकता हूं?पायथन में एक स्ट्रिंग में ° वर्ण कैसे प्राप्त करें?

+0

कृपया देखें [इस उत्तर] (http://stackoverflow.com/a/37678518/4099593) यदि आप *** विंडोज *** सिस्टम पर डिग्री चिह्न मुद्रित करने का प्रयास कर रहे हैं। –

उत्तर

27

अपने स्रोत के शीर्ष पर इस लाइन रखो

# -*- coding: utf-8 -*- 

अपने संपादक एक अलग एन्कोडिंग, के लिए UTF-8

विकल्प का उपयोग करता है तो फिर आप UTF-8 वर्णों सीधे स्रोत

+0

आपके संपादक को मानना ​​यूटीएफ -8 करता है। यदि आपका संपादक एक अलग अक्षरसेट का उपयोग करता है तो इसके बजाए इंगित करें। –

+0

# - * - कोडिंग: सीपी 1252 - * - मेरे लिए क्या काम करता है – Richard

27
>>> u"\u00b0" 
u'\xb0' 
>>> print _ 
° 

बीटीडब्ल्यू, मैंने जो कुछ किया वह Google पर "यूनिकोड डिग्री" खोज रहा था। "डिग्री पर हस्ताक्षर U + 00B0" और "डिग्री सेल्सियस U + 2103", जो वास्तव में अलग हैं:: यह दो परिणाम लाता है

>>> u"\u2103" 
u'\u2103' 
>>> print _ 
℃ 
+0

या पायथन 3 में बस 'ए =' \ u00b0''' – JAB

+7

@ जेएबी: या बस 'ए =' डिग्री ''। – SilentGhost

+0

@SilentGhost: ठीक है हाँ, लेकिन मुझे ° के लिए numpad कोड याद नहीं आया और उस समय इसे देखने की तरह महसूस नहीं किया। – JAB

50

यह सबसे coder- है में शामिल कर सकते हैं यूनिकोड वर्ण निर्दिष्ट करने के अनुकूल संस्करण:

degree_sign= u'\N{DEGREE SIGN}' 

नोट: '\ n' न्यू लाइन चरित्र के साथ भ्रम से बचने के \N निर्माण में एक राजधानी एन होना चाहिए। घुंघराले ब्रेसिज़ के अंदर चरित्र का नाम किसी भी मामले में हो सकता है।

अपने यूनिकोड इंडेक्स की तुलना में किसी चरित्र के name को याद रखना आसान है। यह भी अधिक पठनीय, ergo डीबगिंग-अनुकूल है। चरित्र प्रतिस्थापन संकलन समय पर होता है: .py[co] फ़ाइल u'°' के लिए एक निरंतर में शामिल होंगे:

>>> import dis 
>>> c= compile('u"\N{DEGREE SIGN}"', '', 'eval') 
>>> dis.dis(c) 
    1   0 LOAD_CONST    0 (u'\xb0') 
       3 RETURN_VALUE 
>>> c.co_consts 
(u'\xb0',) 
>>> c= compile('u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval') 
>>> c.co_consts 
(u'\xb0-\u2205',) 
>>> print c.co_consts[0] 
°-∅ 
6

सिर्फ \xb0 (in a string); अजगर का उपयोग यह परिवर्तित कर देंगे स्वचालित रूप से

6

से ऊपर जवाब मान लेते हैं कि UTF8 एन्कोडिंग सुरक्षित रूप से इस्तेमाल किया जा सकता है - यह एक विशेष रूप से विंडोज के लिए लक्षित है।

Windows कंसोल normaly, CP850 एन्कोडिंग और नहीं UTF8 का उपयोग करता है, इसलिए यदि आप एक स्रोत फ़ाइल UTF8 एन्कोड इस्तेमाल करने की कोशिश, आप उन 2 (गलत) वर्ण एक डिग्री ° के बजाय ┬░। (एक खिड़कियों कंसोल में अजगर 2.7 का उपयोग कर)

प्रदर्शन:

deg = u'\xb0` # utf code for degree 
print deg.encode('utf8') 

प्रभावी रूप से आउटपुट ┬░

फिक्स: बस सही एन्कोडिंग (या बेहतर इस्तेमाल यूनिकोड) के लिए मजबूर:

local_encoding = 'cp850' # adapt for other encodings 
deg = u'\xb0'.encode(local_encoding) 
print deg 

या आप एक स्रोत फ़ाइल है कि स्पष्ट रूप एन्कोडिंग को परिभाषित करता है का उपयोग करता है, तो:

# -*- coding: utf-8 -*- 
local_encoding = 'cp850' # adapt for other encodings 
print " The current temperature in the country/city you've entered is " + temp_in_county_or_city + "°C.".decode('utf8').encode(local_encoding) 
संबंधित मुद्दे

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