Answers:
සිට මෙහි :
ශ්රිත අනුපිළිවෙල () මඟින් වර්ගයේ int අගය ලැබෙනු ඇත. ඔබට අංකය සමඟ සෙල්ලම් කිරීමෙන් පසු ආපසු හැරවීමට අවශ්ය නම්, 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 - ascii: unichr(0x0a) == b'\x0a'.decode('ascii')
එය යුනිකෝඩ් දෙයක් මිස පයිතන්).
ord()
ඔබට ASCII අගය ලබා නොදෙන බව සලකන්න ; එය අක්ෂර වින්යාසය තුළ ඇති ඕනෑම සංඛ්යාංකයක සංඛ්යාත්මක අගයක් ලබා දෙයි. එබැවින් ord('ä')
ඔබ ලතින් -1 භාවිතා කරන්නේ නම් එහි ප්රති result ලය 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 හි එය ඊට වඩා මඳක් සම්බන්ධ වී ඇත්තේ එයට පයි 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 යන දෙදෙනා මත ම දේශීය පරීක්ෂණ දී, එල්ලාවල මහතා str
භාවිතා එහි ASCII කේත ලබා ගැනීමට map(ord, mystr)
මෙන් දෙගුණයකට ආසන්න සඳහා දිගු ගනිමින් ලකුණු ආරම්භ len
10 str
භාවිතා වඩා bytearray(mystr)
Py2 හෝ mystr.encode('ascii')
Py3 මත, සහ ලෙස str
තවදුරටත් ලැබෙන, ගුණකය සඳහා ගෙවන map(ord, mystr)
ඉහල ~ 6.5x-7x දක්වා.
මෙහි ඇති අවාසිය නම්, පරිවර්තනය එකවරම සිදුවීමයි, එබැවින් ඔබේ පළමු ප්රති result ලය සඳහා තව ටිකක් කල් ගතවනු ඇත, සැබවින්ම අති str
විශාල ප්රමාණයක් සමානුපාතිකව විශාල තාවකාලික bytes
/ වේ bytearray
, නමුත් මෙය ඔබව පිටුපසට තල්ලු කිරීමට බල නොකරන්නේ නම්, මෙය වැදගත් නොවේ .