আমি কিভাবে পেতে পারি হওয়া ASCII একটি যেমন একটি অক্ষর মান int
মধ্যে পাইথন ?
আমি কিভাবে পেতে পারি হওয়া ASCII একটি যেমন একটি অক্ষর মান int
মধ্যে পাইথন ?
উত্তর:
থেকে এখানে :
ফাংশন অর্ড () চরের অন্তর্নির্মিত মান পাবে। আপনি যদি সংখ্যাটি নিয়ে খেলার পরে আবার রূপান্তর করতে চান তবে ক্রিয়া ক্রিয়াকলাপটি চালিত করে 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
।
chr(31415) -> '窷'
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')
এটি একটি ইউনিকোড জিনিস, নয় পাইথন)।
দ্রষ্টব্য যে ord()
প্রতি সে আপনাকে ASCII মান দেয় না; এটি আপনাকে যে কোনও এনকোডিংয়ের মধ্যে অক্ষরের সংখ্যাসূচক মান দেয় Therefore সুতরাং ord('ä')
আপনি ল্যাটিন -১ ব্যবহার করছেন যদি ফলাফলটি ২২৮ হতে পারে বা TypeError
আপনি ইউটিএফ -৮ ব্যবহার করছেন তবে এটি উত্থাপন করতে পারে । এমনকি আপনি যদি ইউনিকোডটি পাস করেন তবে এটি ইউনিকোড কোডপয়েন্টও ফিরিয়ে দিতে পারে:
>>> ord(u'あ')
12354
আপনি খুঁজছেন:
ord()
গৃহীত উত্তরটি সঠিক, তবে আপনাকে যদি এএসসিআইআই অক্ষরগুলির পুরো গুচ্ছটি একবারে তাদের এএসসিআইআই কোডগুলিতে রূপান্তর করতে হয় তবে এটি করার আরও একটি চৌকস / দক্ষ উপায় রয়েছে। পরিবর্তে:
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)
একটি সম্পর্কে দুইবার হিসাবে সময় নিচ্ছে বন্ধ শুরু len
10 str
ব্যবহার না করে bytearray(mystr)
Py2 বা mystr.encode('ascii')
Py3, এবং যেমন str
আর পায়, গুণক জন্য অর্থ প্রদান map(ord, mystr)
রি 6.5x-7x ডলারে।
একমাত্র ক্ষতিটি হ'ল রূপান্তরটি একবারে একসাথে হয়, সুতরাং আপনার প্রথম ফলটিতে কিছুটা বেশি সময় লাগতে পারে এবং সত্যিকারের প্রচুর str
পরিমাণে আনুপাতিকভাবে বড় অস্থায়ী bytes
/ হতে পারে bytearray
, তবে এটি যদি আপনাকে পৃষ্ঠাটি ছিটকে যাওয়ার জন্য বাধ্য না করে, তবে এটি সম্ভবত কার্যকর হওয়ার সম্ভাবনা নেই unless ।