কোনও অক্ষরের ASCII মান কীভাবে পাবেন


উত্তর:


1346

থেকে এখানে :

ফাংশন অর্ড () চরের অন্তর্নির্মিত মান পাবে। আপনি যদি সংখ্যাটি নিয়ে খেলার পরে আবার রূপান্তর করতে চান তবে ক্রিয়া ক্রিয়াকলাপটি চালিত করে does

>>> 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


অর্ড () - পাইথন 3.6.5rc1 ডকুমেন্টেশন

অর্ড () - পাইথন 2.7.14 ডকুমেন্টেশন


chr ব্যবহার করে কোন এনকোডিং?
njzk2

15
দ্রষ্টব্য যে chr পাইথন 3 এ ইউনিকার হিসাবেও কাজ করে chr(31415) -> '窷'
উইলিয়াম

6
@ njzk2: এটা, এনকোডিং এটা পাইথন 2. একটি bytestring এটা আপনি একটি চরিত্র যেমন যেমন ব্যাখ্যা করা পর্যন্ত ফেরৎ কোনো চরিত্র ব্যবহার করে না chr(ord(u'й'.encode('cp1251'))).decode('cp1251') == u'й'। পাইথন 3 (বা unichrপাইথন 2 এ) ইনপুট নম্বরটি ইউনিকোড কোডপয়েন্ট ইন্টিজার অর্ডিনাল হিসাবে ব্যাখ্যা করা হয়: unichr(0x439) == '\u0439'(প্রথম 256 পূর্ণসংখ্যার ল্যাটিন -1: 1 unichr(0xe9) == b'\xe9'.decode('latin-1'), প্রথম 128 এর মতো ম্যাপিং রয়েছে ) unichr(0x0a) == b'\x0a'.decode('ascii')এটি একটি ইউনিকোড জিনিস, নয় পাইথন)।
jfs

4
ফাংশনটিকে "অর্ড" বলা হয় কেন?
ইলাইমার

6
@ ইলিমার: এটি "অর্ডিনাল" এর পক্ষে সংক্ষিপ্ত, যার "অর্ডার" করার অনুরূপ ভাষাগত শিকড় রয়েছে - অর্থাত্ চরিত্রটির প্রতীকী উপস্থাপনার চেয়ে সংখ্যাসূচক
জ্যাকব কুলরান

166

দ্রষ্টব্য যে ord()প্রতি সে আপনাকে ASCII মান দেয় না; এটি আপনাকে যে কোনও এনকোডিংয়ের মধ্যে অক্ষরের সংখ্যাসূচক মান দেয় Therefore সুতরাং ord('ä')আপনি ল্যাটিন -১ ব্যবহার করছেন যদি ফলাফলটি ২২৮ হতে পারে বা TypeErrorআপনি ইউটিএফ -৮ ব্যবহার করছেন তবে এটি উত্থাপন করতে পারে । এমনকি আপনি যদি ইউনিকোডটি পাস করেন তবে এটি ইউনিকোড কোডপয়েন্টও ফিরিয়ে দিতে পারে:

>>> ord(u'あ')
12354

15
আপনি প্রদত্ত পরিস্থিতিতে কোন এনকোডিংটি ব্যবহার করছেন তা আপনি কীভাবে আবিষ্কার করতে পারেন?
গোঁফ

1
@ মাউথাছে: পাইথন 3-এ, আপনি ইউনিকোড-অফ-বাক্স ব্যবহার করবেন।
tricasse

বস্তুর ধরণের উপর নির্ভর করে । পাইথন 3 ( স্ট্র ): unicodeডিফল্টরূপে। পাইথন 3 ( বাইটস ): str(b'\xc3\x9c', 'ascii')-> ইউনিকোডডেকোডেরর উত্থাপন করে । Python3 ( বাইট ): str(b'\xc3\x9c', 'utf-8')-> ফেরৎ u । আপনি ছয়টি প্যাকেজটিও দেখতে পারেন।
নোসাহামা


36

গৃহীত উত্তরটি সঠিক, তবে আপনাকে যদি এএসসিআইআই অক্ষরগুলির পুরো গুচ্ছটি একবারে তাদের এএসসিআইআই কোডগুলিতে রূপান্তর করতে হয় তবে এটি করার আরও একটি চৌকস / দক্ষ উপায় রয়েছে। পরিবর্তে:

for ch in mystr:
    code = ord(ch)

বা সামান্য দ্রুত:

for code in map(ord, mystr):

আপনি পাইথন নেটিভ টাইপগুলিতে রূপান্তর করেন যা কোডগুলি সরাসরি পুনরাবৃত্তি করে। পাইথন 3 এ, এটি তুচ্ছ:

for code in mystr.encode('ascii'):

এবং পাইথন ২.6 / ২. on এ এটি কিছুটা বেশি জড়িত কারণ এটিতে পাই 3 স্টাইলের 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 স্থানীয় পরীক্ষা iterating একটি strব্যবহার করে তার হওয়া ASCII কোডগুলি পেতে map(ord, mystr)একটি সম্পর্কে দুইবার হিসাবে সময় নিচ্ছে বন্ধ শুরু len10 strব্যবহার না করে bytearray(mystr)Py2 বা mystr.encode('ascii')Py3, এবং যেমন strআর পায়, গুণক জন্য অর্থ প্রদান map(ord, mystr)রি 6.5x-7x ডলারে।

একমাত্র ক্ষতিটি হ'ল রূপান্তরটি একবারে একসাথে হয়, সুতরাং আপনার প্রথম ফলটিতে কিছুটা বেশি সময় লাগতে পারে এবং সত্যিকারের প্রচুর strপরিমাণে আনুপাতিকভাবে বড় অস্থায়ী bytes/ হতে পারে bytearray, তবে এটি যদি আপনাকে পৃষ্ঠাটি ছিটকে যাওয়ার জন্য বাধ্য না করে, তবে এটি সম্ভবত কার্যকর হওয়ার সম্ভাবনা নেই unless ।


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]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.