Python - 获取切片索引

arm*_*ino 5 python python-2.x python-2.7

是否有可能获得切片的索引值(开始,结束)?例如

In [1]: s = "Test string"
In [2]: s[-6:] # get slice indexes (5,11)
Out[2]: 'string'


In [3]: s = "Another test string"
In [4]: s[8:] # get slice indexes (8,19)
Out[4]: 'test string'
Run Code Online (Sandbox Code Playgroud)

换句话说,我不需要子串本身,只需要索引作为元组(开始,结束).

dav*_*rai 16

您可以slice像这样使用python的对象:

In [23]: s = "Test string"

In [24]: slice(-6, None).indices(len(s))
Out[24]: (5, 11, 1)

In [25]: s = "Another test string"

In [26]: slice(8, None).indices(len(s))
Out[26]: (8, 19, 1)
Run Code Online (Sandbox Code Playgroud)

编辑:使用Eric的改进使用None而不是len(s)作为stop参数


Ash*_*ary 0

定义你自己的函数:

In [119]: def start_end(strs,x):
    if x>0:
        return x,len(strs)  
    else:
        return len(strs)+x,len(strs)
   .....:     

In [120]: start_end("Test String",-6)
Out[120]: (5, 11)

In [122]: func("Another test string",8)
Out[122]: (8, 19)
Run Code Online (Sandbox Code Playgroud)