जवाबों:
से यहाँ :
फंक्शन ऑर्ड () को चार् का इंट वैल्यू मिलेगा। और यदि आप संख्या के साथ खेलने के बाद वापस बदलना चाहते हैं, तो कार्य chr () चाल करता है।
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
पायथन 2 में, एक unichr
फ़ंक्शन भी है , जिसमें यूनिकोड वर्ण लौटा है जिसका क्रम unichr
तर्क है:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
पायथन 3 में आप chr
इसके स्थान पर उपयोग कर सकते हैं unichr
।
chr(31415) -> '窷'
chr(ord(u'й'.encode('cp1251'))).decode('cp1251') == u'й'
,। पायथन 3 में (या unichr
पायथन 2 में), इनपुट नंबर की व्याख्या यूनिकोड कोडपॉइंट पूर्णांक अध्यादेश के रूप में की गई है: unichr(0x439) == '\u0439'
(पहले 256 पूर्णांकों में लैटिन -1 के समान मैपिंग है: unichr(0xe9) == b'\xe9'.decode('latin-1')
पहला 128 - एससीआई: unichr(0x0a) == b'\x0a'.decode('ascii')
यह एक यूनिकोड चीज है, नहीं अजगर)।
ध्यान दें कि ord()
आपको प्रति ASCII मान नहीं देता है; यह आपको एन्कोडिंग में वर्ण का संख्यात्मक मान देता है। इसलिए ord('ä')
यदि आप लैटिन -1 का उपयोग कर रहे हैं, तो इसका परिणाम 228 हो सकता है या TypeError
यदि आप यूटीएफ -8 का उपयोग कर रहे हैं तो यह बढ़ सकता है। यहां तक कि यदि आप इसे एक यूनिकोड पास करते हैं तो यह यूनिकोड कोडपॉइंट भी लौटा सकता है:
>>> ord(u'あ')
12354
आप क्या देख रहे हैं:
ord()
स्वीकृत उत्तर सही है, लेकिन ऐसा करने के लिए एक अधिक चतुर / कुशल तरीका है यदि आपको एक बार में ASCII वर्णों के पूरे समूह को उनके ASCII कोड में बदलने की आवश्यकता है। करने के बजाय:
for ch in mystr:
code = ord(ch)
या थोड़ा तेज:
for code in map(ord, mystr):
आप पायथन देशी प्रकारों में कनवर्ट करते हैं जो सीधे कोड को पुनरावृत्त करते हैं। पायथन 3 पर, यह तुच्छ है:
for code in mystr.encode('ascii'):
और पाइथन 2.6 / 2.7 पर, यह केवल थोड़ा और अधिक शामिल है क्योंकि इसमें Py3 शैली bytes
ऑब्जेक्ट नहीं है ( bytes
यह उर्फ के लिए एक उपनाम है str
, जो चरित्र द्वारा पुनरावृत्त करता है), लेकिन उनके पास है bytearray
:
# If mystr is definitely str, not unicode
for code in bytearray(mystr):
# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):
एक प्रकार के रूप में एन्कोडिंग, जो मूल रूप से क्रमिक द्वारा पुनरावृत्त करता है, इसका अर्थ है कि रूपांतरण बहुत तेज़ी से होता है; Py2.7 और Py3.5 दोनों पर स्थानीय परीक्षणों में, str
अपने ASCII कोड प्राप्त करने के लिए इसका उपयोग करते हुए, Py2 या Py3 पर उपयोग करने की तुलना में 10 के map(ord, mystr)
लिए लगभग दो बार लेना शुरू कर देता है , और लंबे समय तक चलने के रूप में , गुणक उगता है। ~ 6.5x-7x करने के लिए।len
str
bytearray(mystr)
mystr.encode('ascii')
str
map(ord, mystr)
केवल नकारात्मक पक्ष यह है कि रूपांतरण एक ही बार में होता है, इसलिए आपका पहला परिणाम थोड़ा लंबा हो सकता है, और वास्तव में बहुत str
बड़ा एक समानुपातिक रूप से बड़ा अस्थायी होगा bytes
/ bytearray
, लेकिन जब तक कि यह आपको पृष्ठ थ्रेशिंग में मजबूर नहीं करता है, तब तक इस बात की संभावना नहीं है ।