当分割一个字符串返回空字符串时Python中的奇怪行为?

2024-09-28 22:28:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个变量conts,它包含一个二进制文件的内容(以rb作为模式读取)。现在,当我试图通过切片获得字符串片段时,我希望看到变量的适当长度(当然还有内容),但是我没有

下面是我可以复制的代码,我不知道这里发生了什么:

hdr1, hdr2 = conts[0:6], conts[10:7]
print "----------------"
print len(conts)
print len(hdr1)
print len(hdr2)
print len(conts)
print "----------------"
print type(hdr1)
print type(hdr2)
print type(conts)

但是,我得到的输出是:

^{pr2}$

这是怎么回事?我以为切片会为每个切片创建一个新的字符串?在

Python版本:2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]

注意:片之间的四字节间隔是有意的。问题是第二个片段返回一个零长度的字符串,即使有足够的数据。我没有发现任何文档(切片时)需要相邻。在

从17字节到1字节的长度是从17到10的字节。在


Tags: 文件字符串代码内容len字节type二进制
3条回答

你可能是说conts[7:10]

也许不是

hdr1, hdr2 = conts[0:6], conts[10:7]

但是:

^{pr2}$

我的意思是,除了指定负步骤(第三个参数)之外,是否应该在切片中创建第一个>第二个索引?在

根据你的编辑:

hdr1, hdr2 = conts[0:6], conts[10:17]

这是一个空字符串的原因是因为你没有提到你想要一个否定的切片步骤,假设你确实想向后切片。在

hdr1, hdr2 = conts[0:6], conts[10:7:-1]

如果您想做什么,请注意-1,它让python知道您希望在切片时后退而不是向前。在

另外,这也导致了一种简单的方法来反转字符串:

^{pr2}$

切片的格式为:

[start_index:end_index:step]


从您的编辑中,我可以看出,这个答案对于您来说可能是多余的,但这是一个很好的信息,所以我将不再赘述。
以下是你在编辑中所说的话:

hdr1, hdr2 = conts[0:6], conts[10:17]

相关问题 更多 >