जवाबों:
से यहाँ :
फंक्शन ऑर्ड () को चार् का इंट वैल्यू मिलेगा। और यदि आप संख्या के साथ खेलने के बाद वापस बदलना चाहते हैं, तो कार्य 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 करने के लिए।lenstrbytearray(mystr)mystr.encode('ascii')strmap(ord, mystr)
केवल नकारात्मक पक्ष यह है कि रूपांतरण एक ही बार में होता है, इसलिए आपका पहला परिणाम थोड़ा लंबा हो सकता है, और वास्तव में बहुत strबड़ा एक समानुपातिक रूप से बड़ा अस्थायी होगा bytes/ bytearray, लेकिन जब तक कि यह आपको पृष्ठ थ्रेशिंग में मजबूर नहीं करता है, तब तक इस बात की संभावना नहीं है ।