首页 > 解决方案 > bytes() 和 b'' 的区别

问题描述

我有以下内容str
"\xd0\xa0\xd0\xb0\xd1\x81\xd1\x88\xd0\xb8\xd1\x84\xd1\x80\xd0\xbe\xd0\xb2\xd0\xba\xd0\xb0_RootKit.com_63k.txt"

这来自一个文件名:Расшифровка_RootKit.com_63k.txt

我的问题是无法将第一个反转为str第二个。我尝试了一些事情,使用en/decode(),bytes(),但我没有成功。

我注意到的一件事是 b'' 和 bytes() 有不同的输出:

path = "\xd0\xa0\xd0\xb0\xd1\x81\xd1\x88\xd0\xb8\xd1\x84\xd1\x80\xd0\xbe\xd0\xb2\xd0\xba\xd0\xb0_RootKit.com_63k.txt"
bpath = bytes(path, "UTF-8")
print(bpath.decode("UTF-8"))
print(b"\xd0\xa0\xd0\xb0\xd1\x81\xd1\x88\xd0\xb8\xd1\x84\xd1\x80\xd0\xbe\xd0\xb2\xd0\xba\xd0\xb0_RootKit.com_63k.txt".decode('utf8'))

结果:

РаÑÑиÑ
         Ñовка_RootKit.com_63k.txt
Расшифровка_RootKit.com_63k.txt

b''所以我想知道和有什么区别bytes();也许它会帮助我解决我的问题!

标签: pythonpython-3.xbytestream

解决方案


b''是一个前缀,它导致以下字符串被解释为bytes-type 对象。该bytes函数接受一个字符串并返回一个bytes对象。

print(b"\xd0\xa0\xd0\xb0\xd1\x81\xd1\x88\xd0\xb8\xd1\x84\xd1\x80\xd0\xbe\xd0\xb2\xd0\xba\xd0\xb0_RootKit.com_63k.txt".decode

这有效,因为您正在解码字节对象。

path = "\xd0\xa0\xd0\xb0\xd1\x81\xd1\x88\xd0\xb8\xd1\x84\xd1\x80\xd0\xbe\xd0\xb2\xd0\xba\xd0\xb0_RootKit.com_63k.txt"
bpath = bytes(path, "UTF-8")
print(bpath.decode("UTF-8"))

这不能按预期工作,因为您将path其视为字符串,然后将其转换为字节对象,然后尝试解码输出的内容。


推荐阅读