【问题标题】:Pythonic way to strip all 0's from the front of a string从字符串前面去除所有 0 的 Pythonic 方法
【发布时间】:2012-06-02 05:30:58
【问题描述】:

我有一个字符串,稍后将使用int() 进行转换。它是三位数字,其中 0 到 3 个可能是 0。如何从字符串的左侧去除 0?

现在我使用的是string.lstrip('0'),但这会去掉所有的 0 并使字符串为空,从而导致错误。

【问题讨论】:

  • 我喜欢这个问题“什么是从字符串前面去除 0 的 pythonic 方式”,但你说稍后它将用int() 转换似乎完全是红鲱鱼。它与这个问题有什么关系吗?因为int 不会关心前导零。
  • @RayToal:他的意思是他想要去除前导零并且结果必须是int(s) 的有效输入。后者当然是自动的,只要您正确执行第一步。
  • 如果您关心的只是读取为八进制的数字(就像在您的 cmets 中对 ignacio 的回答一样):int 在 python 中不会这样做。 int('010') 将是 10int('010', 0) 应该是 8。如果您想具体说明,请使用int('010', 10)

标签: python


【解决方案1】:

你可以这样做:

s = str(int(s))

另一种选择是:

s = s.lstrip('0') or '0'

【讨论】:

    【解决方案2】:

    你想要str.lstrip()。但也许您应该将基数传递给int()

    【讨论】:

    • 只去掉一个 0。我需要这样做,因为 Python 将它解释为八进制字符串。
    • @Cheezey:不,它去除了多个 0。
    • 哦,它成功了,但是有一个不同的问题。现在将其发布在主要问题中。
    • @IgnacioVazquez-Abrams:我认为传递基数是不必要的。八进制问题是在解析源代码时出现的,而不是在 int('0123') 工作时出现,不是吗?
    • @DSM int('0123') 是 123,但 int('0123',8) 是 83。
    【解决方案3】:

    string[:-1].lstrip('0') 呢? :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2015-09-11
      • 2017-12-17
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2010-12-24
      相关资源
      最近更新 更多