python - Python 字节串子串切片返回不同的表示
问题描述
在尝试修剪前后括号 - [ 和 ] - 我遇到了一些意想不到的事情。在 python 3.7 解释器中:
>>> string = [b'0123456789']
>>> string[0][:5]
b'01234'
>>> string[0][0]
48
>>> string[0][:5] == b'01234'
True
>>> string[0][0] == b'0'
False
这对我来说就像一个矛盾。我是 Python 新手,所以,我是否正确解释了这一点,这很奇怪吗?
解决方案
不,这并不奇怪:
>>> type(b'0')
<class 'bytes'>
>>> type(b'0'[0])
<class 'int'>
所以,一个元素是bytes
一个整数。显然,整数不能等于对象,因为它没有意义(例如,bytes
你如何比较b'123'
and ?)。12
从文档中引用:
由于 bytes 对象是整数序列(类似于元组),因此对于 bytes 对象
b
,b[0]
将是integer,而b[0:1]
将是长度为 1 的 bytes 对象。
推荐阅读
- javascript - 让网站/标签认为它是焦点
- ios - 使用自定义 UICollectionViewCell 时,UICollectionView 内的 UIButton 和其他元素不可访问
- spring - 在 Spring Security 中使用查询参数的 URL 的 regexMatcher
- ios - lldb 无法在导入的 dylib 中查找符号
- javascript - 新的努力,我的代码没有响应 Renee
- java - 获取日期的星期数(从星期三开始的星期)
- java - Eclipse Photon 上的 AspectJ 编译器 - 编译问题
- javascript - 将 HTML 表格导出到 Excel 但指定 Excel 扩展名
- c# - 为 EF (DbContext) 中的实体的每个“添加”或“更新”运行代码
- mysql - 不能添加外键约束,Mysql