>>> ord('A') 65 >>> hex(ord('A')) '0x41' >>> ord('你') 20320 >>> hex(ord('你')) '0x4f60' >>> '你好'.encode('unicode_escape') b'\\u4f60\\u597d'
>>> chr(65) 'A' >>> chr(0x41) 'A' >>> chr(20320) '你' >>> chr(0x4f60) '你' >>> b'\\u4f60\\u597d'.decode(('unicode_escape')) '你好' >>> print(b'\\u4f60\\u597d') b'\\u4f60\\u597d' >>> print(u'\u4f60\u597d') 你好
# 漢字轉十六進制 >>> '你好'.encode('gbk') b'\xc4\xe3\xba\xc3' # 十六進制轉漢字 >>> b'\xc4\xe3\xba\xc3'.decode('gbk') '你好' # 漢字轉十六進制字符串 >>> ''.join( [ '%02X' % x for x in '你好'.encode('gbk') ] ).strip() 'C4E3BAC3' >>> ' '.join( [ '%02X' % x for x in '你好'.encode('gbk') ] ).strip() 'C4 E3 BA C3' # 十六進制字符串轉漢字 >>> bytes.fromhex('C4E3BAC3').decode('gbk') '你好' >>> bytes.fromhex('C4 E3 BA C3').decode('gbk') '你好'
# 數字轉十六進制字符串 >>> hex(21) '0x15' >>> hex(21)[2:] '15' # 十六進制字符串轉數字 >>> int('0x15', 16) 21 >>> int('15', 16) 21
# 數字轉八進制字符串 >>> oct(21) '0o25' >>> oct(21)[2:] '25' # 八進制字符串轉數字 >>> int('0o25', 8) 21 >>> int('25', 8) 21
# 數字轉二進制字符串 >>> bin(5) '0b101' >>> bin(5)[2:] '101' # 二進制字符串轉數字 >>> int('0b101', 2) 5 >>> int('101', 2) 5
# bytes 對象轉十六進制字符串 >>> "%02X" % ord(b'\xff') 'FF' >>> ''.join(["%02X" % i for i in b'\xe4\xbd\xa0\xe5\xa5\xbd']) 'E4BDA0E5A5BD' # bytes 轉 int >>> ord(b'\xff') 255 # int 轉 bytes >>> bytes([255]) b'\xff'
# 字符串轉 01 串(默認 endian 是大端) >>> arr = bitarray() >>> arr.frombytes('你好'.encode('utf8')) >>> arr.to01() '111001001011110110100000111001011010010110111101' # 01 串轉字符串 >>> bitarray('111001001011110110100000111001011010010110111101').tobytes().decode('utf8') '你好'
>>> import codecs >>> codecs.BOM_UTF8 b'\xef\xbb\xbf' >>> len(b'\xef\xbb\xbf') 3 >>> codecs.BOM_UTF8.decode('utf8') '\ufeff' >>> len('\ufeff') 1
>>> from encodings.aliases import aliases >>> for k in aliases: print('%s: %s' % (k, aliases[k]))
>>> import codecs >>> codecs.lookup('utf8') #有效 <codecs.CodecInfo object for encoding utf-8 at 0x13fb4f50828> >>> codecs.lookup('utf-;8') #有效 <codecs.CodecInfo object for encoding utf-8 at 0x13fb4f50a08> >>> codecs.lookup('utf88') #無效 Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> codecs.lookup('utf88') LookupError: unknown encoding: utf88
>>> import encodings >>> encodings.normalize_encoding('utf-;8') 'utf_8'
對應 C 代碼爲:unicodeobject.c中的 __Py_normalize_encoding_函數。html
import sys import locale # 當前系統所使用的默認字符編碼 >>> sys.getdefaultencoding() 'utf-8' # 用於轉換 Unicode 文件名至系統文件名所使用的編碼 >>> sys.getfilesystemencoding() 'utf-8' # 獲取默認的區域設置並返回元組(語言, 編碼) >>> locale.getdefaultlocale() ('zh_CN', 'cp936') # 返回用戶設定的文本數據編碼 # 文檔提到this function only returns a guess >>> locale.getpreferredencoding() 'cp936'
>>> line = '0123456789' >>> line[::-1] '9876543210'
本文出自 walker snapshot