python - 剪切零字符(字符串[:-0]) from string - Python

标签 python string python-2.7

为什么 [:-0] 返回一个空字符串?我的代码中有一个变量,它确定必须剪切的字符串的长度。问题是当这个变量中有 int(0) 时它返回空字符串。

例子:

def rightPass(word,value):
    substring = word[:-value]
    return substring

for i in range(3,-1,-1):
    print rightPass('word',i)

>>> w
>>> wo
>>> wor
>>> 

我知道这样做没什么大不了的:

def rightPass(word,value):
    substring = word[:-value] if value!=0 else word
    return substring

但我找不到 [:-0] 这样做的原因。

我认为这是因为 Python 不知道 -0 值,但我尝试使用 0 并发生了同样的问题。

谁能解释一下?

最佳答案

您要求 Python 从索引 0 到索引 0 创建一个新字符串。这是一个空切片。

切片的结束值 是唯一的。 Python 从起始索引中选取结束索引之前 的所有字符。这里 -00 相同(负零与正零相同)。

请注意,这与使用实际负值不同; [0:-1] 将获取长度并将负值替换为 len(object) - 1 并将其用作最终值,但这 不适用于 -0,因为那不是负值!

如果你想切片到最后,你可以使用 None 而不是 0:

substring = word[:-value if value else None]

关于python - 剪切零字符(字符串[:-0]) from string - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26763788/

相关文章:

将二进制字符串转换为十六进制字符串 C

C:将许多字符插入 malloc 生成的字符串中

string - Dart tryParse double vs string of double

python - 如何交换 Python 列表中的项目?

python - 如何在 Python 中打开图像

python - 我在 python 中遇到 "no module named ad"错误

python - 如何从没有很多结构的抓取页面中提取数据

python - 使用 ID 和 asof 合并两个数据框

python - 如何使用 cygwin 从 posix 切换到 windows

python - Python 中不需要的空间