gb2312编码在线转换_python基础学习—04字符串与编码
點擊上方藍字關注我們不迷路!
字符串與編碼
一、了解計算機編碼
1.1? 編碼
定義:將信息從一種形式轉換為另外一種形式的過程叫做編碼,即信息轉換過程
舉例:信息加密解密、語言翻譯
1.2? 計算機編碼
定義:將計算機可讀信息轉換為人類可讀形式的過程叫做計算機編碼。
注:計算機只能讀取二進制數據0/1,又稱機器碼。
舉例:將機器碼轉換為人類可讀信息,如:圖像、文字、音頻、視頻等。
二、常見編碼
2.1? ASCII碼
中文名:美國信息交換標準碼
英文名:American Standard Code for Information Interchange
基本簡介:ASCII碼是最早的計算機編碼,主要用于表示英文字符、數字和一些標點符號
下面是ASCII表:
ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 |
0 | NUT | 32 | (space) | 64 | @ | 96 |
1 | SOH | 33 | ! | 65 | A | 97 |
2 | STX | 34 | " | 66 | B | 98 |
3 | ETX | 35 | # | 67 | C | 99 |
4 | EOT | 36 | $ | 68 | D | 100 |
5 | ENQ | 37 | % | 69 | E | 101 |
6 | ACK | 38 | & | 70 | F | 102 |
7 | BEL | 39 | , | 71 | G | 103 |
8 | BS | 40 | ( | 72 | H | 104 |
9 | HT | 41 | ) | 73 | I | 105 |
10 | LF | 42 | * | 74 | J | 106 |
11 | VT | 43 | + | 75 | K | 107 |
12 | FF | 44 | , | 76 | L | 108 |
13 | CR | 45 | - | 77 | M | 109 |
14 | SO | 46 | . | 78 | N | 110 |
15 | SI | 47 | / | 79 | O | 111 |
16 | DLE | 48 | 0 | 80 | P | 112 |
17 | DCI | 49 | 1 | 81 | Q | 113 |
18 | DC2 | 50 | 2 | 82 | R | 114 |
19 | DC3 | 51 | 3 | 83 | S | 115 |
20 | DC4 | 52 | 4 | 84 | T | 116 |
21 | NAK | 53 | 5 | 85 | U | 117 |
22 | SYN | 54 | 6 | 86 | V | 118 |
23 | TB | 55 | 7 | 87 | W | 119 |
24 | CAN | 56 | 8 | 88 | X | 120 |
25 | EM | 57 | 9 | 89 | Y | 121 |
26 | SUB | 58 | : | 90 | Z | 122 |
27 | ESC | 59 | ; | 91 | [ | 123 |
28 | FS | 60 | < | 92 | / | 124 |
29 | GS | 61 | = | 93 | ] | 125 |
30 | RS | 62 | > | 94 | ^ | 126 |
31 | US | 63 | ? | 95 | _ | 127 |
2.2? GB2312
中文名:信息交換用漢字編碼字符集
簡介:由中國國家標準總局發布的GB2312專用于表示中文信息,GB 2312標準共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個;同時,GB 2312收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內的682個全角字符。GB 2312的出現,基本滿足了漢字的計算機處理需要,它所收錄的漢字已經覆蓋中國大陸99.75%的使用頻率。
2.3? Unicode碼
英文名:Unicode
中文名:統一碼
別名:萬國碼、單一碼
簡介:Unicode碼為每種語言中的每個字符設定了統一且唯一的二進制編碼,統一了不同國家的編碼,表示不同國家的文字;UTF-8、UTF-16、UTF-32都是將數字轉換到程序數據的編碼方案。
例如:“漢字”對應的數字是0x6c49和0x5b57
2.4??UTF8
中文名:utf8_encode
簡介:Unicode碼實際上是一個字符集,它只規定了二進制與各個字符之間的對應關系,并沒有規定如何在磁盤上存儲。字節是計算機存儲的最小單位,具體換算如下:
# 1024字節?為?1?K# 1024 K 為 1 M# 1024 M 為 1 GUTF32是Unicode 碼?的一種實現,一般用4個字節表示一個字符,而一個英文字符只需要1個字節,一個常用漢字需要2個字節,這樣比較浪費存儲空間。故為了節省存儲空間,UTF8?一般用1 到4?個字節表示一個字符,比如:英文字符用1 個字節,常用漢字用2 個字節。
注意:UTF8?是Unicode 碼的一種常用實現方式,UTF8使用變長字節來表示字符,即使用的字節數是可變的。
三、python源文件編碼
3.1? python2.x
在python2.x中,python源文件默認使用ASCII碼格式編碼,因此默認情況下是不支持中文的。如果強制輸出中文編譯會報錯,這時如果想在python2.x源文件代碼中輸入中文符,需要使用UTF-8編碼,在源文件開頭處添加:
#-*- coding: UTF-8 -*-或者
#coding: utf-83.2? python3.x
在python3.x中,python源代碼文件默認統一使用Unicode編碼,默認以UTF-8格式編碼,就可以直接輸出中文字符,不需要在源文件開頭添加上述代碼。
四、python3字符串與編碼
4.1? str 類型
Python3中的字符串類型str'>統一采用Unicode編碼,因此可以使用各種字符,示例代碼如下:
>>>print(' 覃原 ')??#中文覃原>>>print(' qinyuan ') #英文qinyuan4.2? bytes類型
當str類型需要磁盤存儲或網絡傳輸時,需要將其轉換為bytes類型。同時需要注意bytes是一個二進制類型,需要在str之前加上一個b,示例程序如下:
>>>type(b'qinyuan')??#?注意這里type()函數的作用是判斷數據類型<class 'bytes'>注意:bytes中只能包含ASCII字符,若包含其他字符就會報錯,如下:
>>>name?=?b' 覃原 'SyntaxError: bytes can only contain ASCII literal characters.4.3? str轉為bytes
str類型轉換為bytes類型,需要使用str中的encode方法,參數utf8是編碼格式,示例代碼如下:
>>>name = ' 覃原 '>>>name.encode('?utf8?')b'\xe8\xa6\x83\xe5\x8e\x9f'4.4? bytes轉為str
bytes類型轉換為str類型,需要使用bytes中的decode方法,參數utf8是編碼格式,示例代碼如下:
>>>utf = b'\xe8\xa6\x83\xe5\x8e\x9f'>>>utf.decode('?utf8 ')'?覃原 '注意:str與bytes類型轉換時使用utf8編碼
4.5? str與Unicode互轉
將str轉為Unicode,其中參數unicode-escape是編碼格式,示例代碼如下:
>>>'覃原'.encode('unicode-escape')b'\\u8983\\u539f'將Unicode轉為str,示例代碼如下:
>>>b'\\u8983\\u539f'.decode('unicode-escape')'覃原'五、字符串格式化
5.1? %運算符——格式化輸出
格式符號 | 轉換 |
%s | 字符串 |
%d | 有符號的十進制整數 |
%f | 浮點數 |
%c | 字符 |
%u | 無符號十進制整數 |
%o | 八進制整數 |
%x | 十六進制整數(小寫ox) |
%X | 十六進制整數(大寫OX) |
%e | 科學計數法(小寫’e’) |
%E | 科學計數法(大寫’E’) |
%g | %f和%e的簡寫 |
%G | %f和%E的簡寫 |
示例程序:
>>>age = 21>>>name = ' 覃原 '>>>weight= 60.50>>>student_id=1>>>print(' 我的名字是%s ' % name)>>>print('?我的學號是%04d '?%?student_id)>>>print(' 我的年齡是%d ' % age)>>>print(' 我的體重是%.2f公斤' % weight)>>>print(' 我的學號是%04d,名字%s,年齡%d,體重%.2f' % (student_id,name,age,weight))我的學號是0001,名字覃原,年齡21,體重60.50注意:(1) %04d,表示輸出的整數顯示位數,不足以0補全,超出當前位數則原樣輸出。
(2)%.2f,表示小數點后顯示的小數位數。
(3)可以采用%s輸出所有類型的數據,%s會將所有數據轉換為字符串
(4)%%可以輸出為%,不轉義%
5.2? format( )函數
format()用于字符串格式化,功能非常強大,格式是str.format(),format函數可以接受不限個參數,位置可以不按順序,示例代碼如下:
>>>print('?我的學號是{0:04d},名字{1},年齡{2},體重{3:.2f}'.format?(student_id,name,age,weight))我的學號是0001,名字覃原,年齡21,體重60.505.3? f-格式化字符串
f-string是格式化字符串的一種很好的新方法。與其他格式化方式相比,它不僅更易讀,更簡潔,不易出錯,而且速度更快,其格式為:f '{表達式}',示例代碼如下:
>>>print(f '我的學號是{student_id:04d},名字{name},年齡{age},體重{weight:.2f}')我的學號是0001,名字覃原,年齡21,體重60.50函數擴展
1.ord( ): 獲取一個字符的十進制,示例程序:
>>>ord('覃')352032.chr( ): 將十進制數字轉為字符,示例程序:
>>>chr(35203)覃3.str( ): 將非字符串值轉換為字符串,示例程序:
>>>age = 21 #這里age為int型21>>>str(age) #即轉換為字符串'21'4.len( ): 計算str的字符數,如果換成bytes,就是計算字節數,示例程序:
>>>len('QIN')3>>>len('覃原')2>>>len(b'\xe8\xa6\x83\xe5\x8e\x9f')6>>>len('覃原'.encode('utf-8'))65.type( ): 判斷數據類型,示例程序:
>>> type('覃原')↓↓↓
練習
小覃的成績從去年的80分提升到了今年的90分,請計算小明成績提升的百分點,并分別使用三種字符串格式化方法顯示出 ' xx.xx% ',保留兩位小數即可。
end
總結
以上是生活随笔為你收集整理的gb2312编码在线转换_python基础学习—04字符串与编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 太太好美!此MOD让你在《FF7RE》扮
- 下一篇: 《英雄联盟》夏季赛 WBG对阵RA出现戏