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 這些,都會有乙個東西叫解碼方式,出...