किसी वर्ण का ASCII मान कैसे प्राप्त करें


जवाबों:


1346

से यहाँ :

फंक्शन ऑर्ड () को चार् का इंट वैल्यू मिलेगा। और यदि आप संख्या के साथ खेलने के बाद वापस बदलना चाहते हैं, तो कार्य 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


ord () - पायथन 3.6.5rc1 प्रलेखन

ord () - पायथन 2.7.14 प्रलेखन


जो chr में एन्कोडिंग का उपयोग कर?
njzk2

15
ध्यान दें कि chr भी Python 3 में unichr के रूप में कार्य करता है chr(31415) -> '窷'
विलियम

6
@ njzk2: यह किसी भी वर्ण एन्कोडिंग का उपयोग नहीं करता है जो पायथन 2 में एक बाईटस्ट्रिंग देता है। यह आपको एक चरित्र के रूप में व्याख्या करने के लिए है, जैसे 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')यह एक यूनिकोड चीज है, नहीं अजगर)।
jfs

4
फ़ंक्शन को "ऑर्ड" क्यों कहा जाता है?
eLymar

6
@ लाइमर: "ऑर्डिनल" के लिए यह छोटा है, जिसमें "आदेश" के समान भाषाई जड़ें हैं - यानी चरित्र के प्रतीकात्मक प्रतिनिधित्व के बजाय संख्यात्मक
जैकब क्राल

166

ध्यान दें कि ord()आपको प्रति ASCII मान नहीं देता है; यह आपको एन्कोडिंग में वर्ण का संख्यात्मक मान देता है। इसलिए ord('ä')यदि आप लैटिन -1 का उपयोग कर रहे हैं, तो इसका परिणाम 228 हो सकता है या TypeErrorयदि आप यूटीएफ -8 का उपयोग कर रहे हैं तो यह बढ़ सकता है। यहां तक ​​कि यदि आप इसे एक यूनिकोड पास करते हैं तो यह यूनिकोड कोडपॉइंट भी लौटा सकता है:

>>> ord(u'あ')
12354

15
आप यह कैसे पता लगा सकते हैं कि आप किसी दिए गए स्थिति में किस एन्कोडिंग का उपयोग कर रहे हैं?
मूंछ

1
@Moustache: पायथन 3 में, आप यूनिकोड आउट-ऑफ-द-बॉक्स का उपयोग करेंगे।
त्रिकसेक

वस्तु प्रकार पर निर्भर करता है । Python3 ( str ): unicodeडिफ़ॉल्ट रूप से। पायथन 3 ( बाइट्स ): str(b'\xc3\x9c', 'ascii')-> यूनिकोडडब्लोसफ्रेम उठाता है । Python3 ( बाइट्स ): str(b'\xc3\x9c', 'utf-8')-> रिटर्न Ü । आप छह पैकेज में भी देख सकते हैं ।
नौशाम


36

स्वीकृत उत्तर सही है, लेकिन ऐसा करने के लिए एक अधिक चतुर / कुशल तरीका है यदि आपको एक बार में 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, लेकिन जब तक कि यह आपको पृष्ठ थ्रेशिंग में मजबूर नहीं करता है, तब तक इस बात की संभावना नहीं है ।


3

किसी वर्ण का ASCII कोड प्राप्त करने के लिए, आप ord()फ़ंक्शन का उपयोग कर सकते हैं ।

यहाँ एक उदाहरण कोड है:

value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)

आउटपुट:

Your value here: qwerty
[113, 119, 101, 114, 116, 121]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.