randomString.decode(“utf-8”)VS str(randomString,“utf-8”)之间有什么区别? 我看到它们相同,但是当我尝试它们时,结果却变得不同了!
>>> randomString =“Hello World”
>>> str(randomString)
\'Hello World' >>> randomString.decode(“utf-8”)
追溯(最近的呼叫最后):
文件“< input>”,第1行,在中 AttributeError:'str'对象没有属性'decode'
>>> randomString.encode()
b'Hello World'
>>> bString = randomString.encode()
>>> bString.decode()
'Hello World'
>>> STR(bString)
“b'Hello World”
我真的不明白普通字符串和字节字符串之间的区别吗?
帮助PLZ!
答案 0 :(得分:0)
阅读(Python) Built-in Functions和str()
in detail:
class str(object='') class str(object=b'', encoding='utf-8', errors='strict')
返回对象的字符串版本。如果未提供对象,则返回 空字符串。否则,
str()
的行为取决于是否 给出了编码或错误,如下所示。如果既没有给出编码也没有给出错误,
str(object)
返回object.__str__()
,这是“非正式”或可打印的字符串 对象的表示。对于字符串对象,这是字符串 本身。如果对象没有__str__()
方法,则str()
会失败 回到repr(object)
。如果给出了至少一个编码或错误,则对象应为a bytes-like object(例如
bytes
或bytearray
)。在这种情况下,如果是对象 是字节(或 bytearray )对象,然后是str(bytes, encoding, errors)
相当于bytes.decode(encoding, errors)
。否则,在调用之前获取缓冲区对象下的字节对象bytes.decode()
。有关缓冲区对象的信息,请参阅Binary Sequence Types — bytes, bytearray, memoryview和Buffer Protocol。
请注意,上述引用文字中未明确指定所有链接。
示例(Python 3.5.1):
>>>
>>> randomString = 'latin, ελληνικά, кириллица'
>>>
>>> print (str(randomString.encode(),"utf-8") == randomString.encode().decode())
True
>>>