【问题标题】:Cut zero chars (string[:-0]) from string - Python从字符串中剪切零个字符(字符串 [:-0]) - Python
【发布时间】:2023-03-19 08:52:01
【问题描述】:

为什么[:-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 string python-2.7


    【解决方案1】:

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

    切片的结束值是独占的。 Python 从开始索引中选择 结束索引之前的所有字符。这里-00 是一回事(负零和正零是一回事)。

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

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

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

    【讨论】:

    • 谢谢,当然我指的是 range(3,-1,-1)。我已经编辑了我的问题。
    【解决方案2】:

    切片中的第二个参数是结束位置。

    [start : stop : step]
    

    startstop 的范围是半开的,这意味着它包括start 最多但不包括 stop

    所以[: 0] 表示从[0] 开始并停止在但不包括[0],它只能是空字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多