python - 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()
;也许它会帮助我解决我的问题!
解决方案
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
其视为字符串,然后将其转换为字节对象,然后尝试解码输出的内容。
推荐阅读
- python - Python - 如何重置列数据框名称熊猫中的数字顺序?
- java - BroadcastReceiver 在 Intent.ACTION_POWER_DISCONNECTED 上执行某些操作
- autodesk-forge - 如何列出特定存储桶的对象?
- c# - 如何使用 c# 将信件从 Exchange 移动到共享点库?
- javascript - 如何将此数据拆分为供应商和价格并将其分别存储在二维数组中
- z3 - 是否可以将两个字符串与 Z3 进行比较?
- c# - Entity Framework Core 在控制台应用程序中获取上下文
- c# - C# 中的语义解释 SRGS
- java - Querydsl:如何选择特定列
- curl - 将请求从 chrome 复制到 curl 时出现 403