Python(3)字串的編碼 長度 佔位符

2021-08-09 02:22:29 字數 3199 閱讀 9489

1、轉換單個字元為編碼:

ord(c)

返回值可以認為是數字型別。

foo = '中'

print(ord(foo)) # 20013

如果不止乙個字元,則會報錯

2、轉換單個字元的編碼為字元

chr(code)

返回值是字元

print(chr(20013))     # '中'
3、用unicode方式輸出字元

\u十六進製制編碼

例如,20013轉為十六進製制是4e2d

print('\u4e2d')     # 

'中'

4、將字元轉為bytes形式的編碼

首先,當字串前面有b時表示是bytes形式的編碼。

例如,b'\xe4\xb8\xad'表示文字。這個東西一般是需要進行網路傳輸,或者在硬碟上讀寫時使用的。

str.encode(encoding=』utf-8』,errors=』strict』)

附個中文說明吧,找不到類似mdn這樣的完善的說明**。

兩個引數都可以省略,預設轉為utf-8格式。其作用大致類似js裡的encodeuri()方法,雖然我並不能完全肯定其是否一樣。

示例:

foo = '中'.encode('utf-8')

print(foo) # b'\xe4\xb8\xad'

5、從bytes形式的編碼轉回普通字串

屬於上面的逆向行為。

bytes.decode(encoding=」utf-8」, errors=」strict」)

foo = b'\xe4\xb8\xad'.decode()

print(foo) #

'中'

len(o)

引數是被檢查的字串。

這個比較智慧型:

對普通字串,返回其字元個數,例如len('中')的返回值是1(只有乙個字元);

對於bytes形式的編碼,返回其位元組數。例如len(b'\xe4\xb8\xad')的返回值是3;

對於普通字串,像\n這樣的換行符或者其他轉義字元,其長度視為1;

但假如字串前面加了r(視為非轉義字元),那麼\n的長度則視為2;

len('中')    # 1

len(b'\xe4\xb8\xad') # 3

len('a\nb') # 3

len(r'a\nb') # 4

簡單來說,佔位符就是先佔住乙個固定的位置,然後用其他東西替換這個位置的內容。

如果玩過c語言,那麼應該很熟悉。

標準佔位符是:%d,注意是小寫的,其他佔位符也一樣是小寫。

通用寫法是:

foo = '→%s←' % ('abc')

print(foo) # 箭頭指向的地方被替換的→abc←

佔位符的數量和括號裡的引數數量要一致,不然拋錯

因為上面只有乙個佔位符,所以括號可以省略。

foo = '→%s←' % 'abc'

print(foo) # →abc←

整數佔位符(%d)

引數可以是浮點數(小數)或整數,浮點數的話直接取整數字使用。

foo = '%d' % (1.9)

print(foo) # 1

整數佔位符的補位寫法:

%和後面的d之間新增兩個數字,可以表示補足到多少位內容和以什麼字元來補。

常見寫法是補零,如示例:

foo = '%03d' % 1

print(foo) # 001

%後面跟的第乙個是0,表示用0是補位內容;第二個字元開始至d之前的字元是3,表示補足到三位。

具體來說,就是首先用1來替換%03d的位置,替換後結果是1

然後發現第二個至d之間是3,表示要補足3位,即xx1這樣。

但這個x是什麼呢?發現第一位是0,因此變成001,即結果。

兩種特殊情況:

假如被替換後超出三位,例如foo = '%03d' % 1234替換後結果是1234。這種情況不補位;

可以用其他填充麼?答案是不行。

浮點數佔位符(%f)

會把引數變為乙個六位小數,然後替換。

示例:

foo = '%f' % 2.1234

print(foo) # 2.123400

也可以只取幾位小數,寫法是%f之間加.和需要保留的位數。

示例:

foo = '%.2f' % 2.1234

print(foo) # 2.12

另外需要注意,浮點數由於精確度問題,因此最後一位並不是四捨五入,也不是直接捨去後面的內容。

這涉及到浮點數的儲存問題,就不深談了。

轉為十六進製制(%x)

很好理解,將數字轉為十六進製制

foo = '%x' % 31

print(foo) # 1f

另外提一下十六進製制轉為十進位制的方法:

foo = '1f'

# 這裡需要是字串

print(int(foo, 16)) # 31

Python 3「字串和編碼「

python3 字串是以unicode編碼 字元的表示轉換函式 str變為bytes方法 bytes變為str方法 注意!中文不能轉為ascii編碼 len 函式 儲存源 時,通常要在檔案開頭加上兩行 usr bin env python3 coding utf 8 格式化 小明的成績從去年的72分...

python3 字串編碼相關

編碼型別很多,常見的例如 ascii碼 最早被編入計算機中的,長度是128,主要是為了解決英文本元 gb2312 中國人編碼的,為了解決中文 unicode 統一多種編碼方式,降低亂碼 utf 8 unicode的改進版,節省編碼長度 python3預設編碼方式是 utf 8 編碼方式相互轉換 de...

python3字串編碼和解碼

雖然這是乙個很基礎的問題,但是博主一直都是瞎貓碰死耗子的心態去試,因為對於中文就那麼幾種encode方式 編碼解碼 一般來說由一種字串變成二進位制串的過程叫encode 反之稱為decode 通常我們寫乙個文件時,無論是通過word pycharm notepad 這些,都會有乙個東西叫解碼方式,出...