str()函數(shù)返回給定對象的字符串表現(xiàn)形式。
str()的語法為:
str(object, encoding='utf-8', errors='strict')
str() 方法具有三個(gè)參數(shù):
object- object要返回其字符串表示形式。如果未提供,則返回空字符串
encoding-給定對象的編碼。未提供時(shí)默認(rèn)值為UTF-8。
errors-解碼失敗時(shí)的響應(yīng)。默認(rèn)為'strict'。
共有六種類型errors:
strict-默認(rèn)響應(yīng),在失敗時(shí)引發(fā)UnicodeDecodeError異常
ignore -從結(jié)果中忽略無法編碼的Unicode
replace -將無法編碼的Unicode替換為問號
xmlcharrefreplace -插入XML字符引用而不是無法編碼的Unicode
backslashreplace-插入\uNNNNespace序列而不是無法編碼的Unicode
namereplace-插入\N{...}轉(zhuǎn)義序列而不是無法編碼的Unicode
str()方法返回一個(gè)字符串,該字符串被視為給定對象的非正式或可打印的表示形式。
如果未提供encoding和errors參數(shù),則在str()內(nèi)部調(diào)用__str__()對象的方法。
如果找不到__str__()方法,則調(diào)用repr(obj)。
result = str(10) print(result)
輸出結(jié)果
10
注意:結(jié)果變量將包含一個(gè)字符串。
也可以在Python指定臺上嘗試這些命令。
>>> str('Adam')
>>> str(b'Python!')
如果提供了encoding和errors參數(shù),則第一個(gè)參數(shù)object應(yīng)該是一個(gè)類似于bytes的對象(bytes或bytearray)。
如果對象是bytes 或 bytearray,則在str()內(nèi)部進(jìn)行調(diào)用bytes.decode(encoding, errors)。
否則,它將在調(diào)用decode()方法之前獲取緩沖區(qū)中的bytes對象。
# bytes b = bytes('pyth?n', encoding='utf-8') print(str(b, encoding='ascii', errors='ignore'))
輸出結(jié)果
pythn
此處,字符'?'無法通過ASCII解碼。因此,它應(yīng)該給出一個(gè)錯(cuò)誤。但是,我們已經(jīng)設(shè)置了errors ='ignore'。因此,Python str()函數(shù)會忽略無法通過解碼的字符。