Python字符串编码

转义unicode字符串转中文

有这样的一段unicode形式的字符串: "\u751F\u5316\u5371\u673A"

>>> type("\u751F\u5316\u5371\u673A")
<class 'str'>
>>> "\u751F\u5316\u5371\u673A"
生化危机
>>> type("\u751F\u5316\u5371\u673A")
生化危机

我们有时候还会遇到这样的字符"\\u751F\\u5316\\u5371\\u673A", 对反斜杠进行了转义

>>> type("\\u751F\\u5316\\u5371\\u673A")
<class 'str'>
>>> "\\u751F\\u5316\\u5371\\u673A"
'\\u751F\\u5316\\u5371\\u673A'
>>> print("\\u751F\\u5316\\u5371\\u673A")
\u751F\u5316\u5371\u673A

那么我们怎么让字符串显示为生化危机

>>> "\\u751F\\u5316\\u5371\\u673A".encode('utf-8').decode('unicode_escape')
'生化危机'

以下为转载

python常用的十进制、16进制、字符串、字节串之间的转换

转载: https://blog.csdn.net/crylearner/article/details/38521685

整数之间的进制转换:
10进制转16进制: hex(16)  ==>  0x10
16进制转10进制: int(‘0x10’, 16)  ==>  16
类似的还有oct(), bin()


字符串转整数:
10进制字符串: int(‘10’)  ==>  10
16进制字符串: int(‘10’, 16)  ==>  16
16进制字符串: int(‘0x10’, 16)  ==>  16


字节串转整数:
转义为short型整数: struct.unpack(‘<hh’, bytes(b’\x01\x00\x00\x00’))  ==>  (1, 0)
转义为long型整数: struct.unpack(‘<L’, bytes(b’\x01\x00\x00\x00’))  ==>  (1,)


整数转字节串:
转为两个字节: struct.pack(‘<HH’, 1,2)  ==>  b’\x01\x00\x02\x00’
转为四个字节: struct.pack(‘<LL’, 1,2)  ==>  b’\x01\x00\x00\x00\x02\x00\x00\x00’


字符串转字节串:
字符串编码为字节码: ‘12abc’.encode(‘ascii’)  ==>  b’12abc’
数字或字符数组: bytes([1,2, ord(‘1’),ord(‘2’)])  ==>  b’\x01\x0212’
16进制字符串: bytes().fromhex(‘010210’)  ==>  b’\x01\x02\x10’
16进制字符串: bytes(map(ord, ‘\x01\x02\x31\x32’))  ==>  b’\x01\x0212’
16进制数组: bytes([0x01,0x02,0x31,0x32])  ==>  b’\x01\x0212’


字节串转字符串:
字节码解码为字符串: bytes(b’\x31\x32\x61\x62’).decode(‘ascii’)  ==>  12ab
字节串转16进制表示,夹带ascii: str(bytes(b’\x01\x0212’))[2:-1]  ==>  \x01\x0212
字节串转16进制表示,固定两个字符表示: str(binascii.b2a_hex(b’\x01\x0212’))[2:-1]  ==>  01023132
字节串转16进制数组: [hex(x) for x in bytes(b’\x01\x0212’)]  ==>  [‘0x1’, ‘0x2’, ‘0x31’, ‘0x32’]


版权声明:本文为CSDN博主「sunshyran」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/crylearner/article/details/38521685