【Python入門】4.Python編程基礎(chǔ)之字符編碼

本節(jié)摘要:字符編碼;輸出格式化


Daily Record:每天一紀(jì)念,記錄下python的學(xué)習(xí)歷程,入門學(xué)習(xí)筆記與心得。本學(xué)習(xí)筆記主要基于廖雪峰大大的Python教程。不積跬步,無以至千里~ .?(? ??_??)?


文章目錄

  • 字符編碼
  • 輸出格式化

字符編碼

計(jì)算機(jī)以二進(jìn)制儲(chǔ)存和處理各類數(shù)據(jù),美國(guó)人發(fā)明了計(jì)算機(jī),因而他把127個(gè)字符編碼到計(jì)算機(jī)中,包括英文字母、數(shù)字和一些符號(hào),每個(gè)字符有對(duì)應(yīng)的編碼,這個(gè)編碼表就是ASCII編碼。

然而時(shí)間上的語言多種多樣,其他語言只用一個(gè)字節(jié)處理顯然是不夠的,因而各個(gè)國(guó)家制定了各自的編碼,中國(guó)制定了GB2312編碼,用來把中文編進(jìn)去,日本把日文編到Shift_JIS里,韓國(guó)把韓文編到Euc-kr里。由于各國(guó)的標(biāo)準(zhǔn)不同,編碼中必然會(huì)出現(xiàn)沖突,多語言混合的文本中可能就會(huì)出現(xiàn)亂碼。為了解決亂碼的出現(xiàn),Unicode應(yīng)運(yùn)而生,它把所有語言都統(tǒng)一到一套編碼里,避免出現(xiàn)亂碼。相比ASCII編碼的一個(gè)字節(jié),Unicode通常是用兩個(gè)字節(jié)表示一個(gè)字符,極其偏僻的可能會(huì)用到4個(gè)字節(jié)。

編碼 區(qū)別
ASCII編碼 1個(gè)字節(jié)
Unicode編碼 2個(gè)字節(jié)

為了節(jié)約存儲(chǔ)空間,而后又發(fā)展出了一種可自動(dòng)調(diào)整字節(jié)數(shù)的UTF-8編碼。以下是三種編碼的比較。

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 10111000 10101101

計(jì)算機(jī)系統(tǒng)通用的字符編碼工作方式:

在計(jì)算機(jī)內(nèi)存中,統(tǒng)一使用Unicode編碼,當(dāng)需要保存到硬盤或者需要傳輸?shù)臅r(shí)候,就轉(zhuǎn)換為UTF-8編碼。

用記事本編輯的時(shí)候,從文件讀取的UTF-8字符被轉(zhuǎn)換為Unicode字符到內(nèi)存里,編輯完成后,保存的時(shí)候再把Unicode轉(zhuǎn)換為UTF-8保存到文件:

Python的字符串

Python提供了ord()和chr()函數(shù),可以把字母和對(duì)應(yīng)的數(shù)字相互轉(zhuǎn)換:

>>> ord('C')                               #ord()函數(shù)獲取字母的整數(shù)表示
67                                      
>>> chr(67)                              #chr()函數(shù)把整數(shù)轉(zhuǎn)化成對(duì)應(yīng)字母
C                                         
>>> b'ABC'                                  #用b''或""表示bytes類型的數(shù)據(jù)
>>> b'ABC'.decode('ascii')                  #用.decode()可以把bytes轉(zhuǎn)化為str   
ABC                                        
>>> 'ABC'.encode('ascii')                   #用.encode()可以把str轉(zhuǎn)化為bytes   
b'ABC'                                    
>>> len('中文')                              #讀取字符長(zhǎng)度  
2                                          
>>> len('中文'.encode('utf-8'))              #讀取字節(jié)長(zhǎng)度  
6                                          


輸出格式化

日常生活中常會(huì)輸出類似'親愛的xxx你好!你xx月的話費(fèi)是xx,余額是xx'之類的字符串,而xxx的內(nèi)容都是根據(jù)變量變化的,所以,需要一種簡(jiǎn)便的格式化字符串的方式。
在Python中,用實(shí)現(xiàn),舉例如下:

>>> 'hello, %s' % ‘world’
‘hello, world'
>>> 'Hi, %s, you have $%d.' % ('Lareina', 100000)
'Hi, Lareina, you have $100000.'

常見的占位符

常見的占位符 代表
%s 字符串
%d 整數(shù)
%f 浮點(diǎn)數(shù)
%x 十六進(jìn)制整數(shù)

有幾個(gè)%?占位符,后面就跟幾個(gè)變量或者值,順序要對(duì)應(yīng)好。如果只有一個(gè)%?,括號(hào)可以省略。

其中,格式化整數(shù)和浮點(diǎn)數(shù)還可以指定是否補(bǔ)0和整數(shù)與小數(shù)的位數(shù):

>>> '%2d-%02d' % (3,1)
' 3-01'
>>> '$.2f' % 3.1415926
'3.14'

如果你不太確定應(yīng)該用什么,%s永遠(yuǎn)起作用,它會(huì)把任何數(shù)據(jù)類型轉(zhuǎn)換為字符串:

>>> 'Age: %s. Gender: %s' % (25, False)
'Age: 25. Gender: False'

對(duì)于Unicode字符串,用法完全一樣,但最好確保替換的字符串也是Unicode字符串:

>>> u'Hi, %s' % u'Lareina'
>'Hi, Lareina'

有些時(shí)候,字符串里面的%是一個(gè)普通字符怎么辦?這個(gè)時(shí)候就需要轉(zhuǎn)義,用%%來表示一個(gè)%:

>>> 'growth rate: %d %%' % 8
'growth rate: 8 %'
>>>print('%5d' % 333)                         #向左保留5位占位符
  333
>>>print('%05d' % 333)                        #向左保留5位占位符并補(bǔ)0
00333
>>>print('%.2f' % 3.1415926)                  #四舍五入保留兩位小數(shù)
3.14

Python中的除法

>>>print(5/3)                                 #一般除法
1.6666666666666667
>>>print(5//3)                                #地板除
1
>>>print(5%3)                                 #取余數(shù)
2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字符集和編碼簡(jiǎn)介 在編程中常??梢砸姷礁鞣N字符集和編碼,包括ASCII,MBCS,Unicode等字符集。確切的說...
    蘭山小亭閱讀 9,091評(píng)論 0 13
  • 字符編碼 我們已經(jīng)講過了,字符串也是一種數(shù)據(jù)類型,但是,字符串比較特殊的是還有一個(gè)編碼問題。 因?yàn)橛?jì)算機(jī)只能處理數(shù)...
    luckybabying閱讀 338評(píng)論 0 0
  • 前言 首先,本次立項(xiàng)項(xiàng)目只是為了做網(wǎng)絡(luò)爬蟲,本身不需要Python完整的知識(shí)鏈。因此,對(duì)于基本語法,我會(huì)浮光掠影,...
    OzanShareing閱讀 1,208評(píng)論 3 2
  • 賢妻良母,良師益友,金玉良言,用心良苦,對(duì)你千千萬萬遍,不厭其煩,這個(gè)女人真嘮叨,有的時(shí)候打著電話,心煩意亂了...
    桐花的童話閱讀 383評(píng)論 0 1
  • 我們這一百多年來,犯的最大的一個(gè)錯(cuò)誤,就是把中華優(yōu)秀的文化傳統(tǒng)都打倒了。學(xué)者們也說,我們的優(yōu)秀文化傳統(tǒng)被四個(gè)字給打...
    秦東魁閱讀 373評(píng)論 0 0

友情鏈接更多精彩內(nèi)容