python函数返回第一个非零 strip 中间零并返回数字字符串的最后一部分

标签 python

给定一个数字文本字符串,如“0104002”,我需要返回 01 4002

当数字大于 0 时,基本上返回数字文本字符串的第一部分。然后对于第二部分,返回从下一个非零数字开始直到字符串结尾的部分。每个输入的数字位置会有所不同,字符串的长度不会相同

到目前为止,我只能得到我需要的第一部分

def lot(num):
    lot=""
    for x in num:
        lot+=x
        y=int(x)
        if y>0: break
    print lot

lot('0104002')

最佳答案

这对于正则表达式来说似乎是微不足道的事情:

>>> import re
>>> re.match(r'^(0*[^0]+)0+([^0].*)$', '0104002').groups()
('01', '4002')

这个正则表达式定义了两个被一个或多个零分开的组。拆分由出现在第一系列非零之后的第一系列零定义。 split 之前发生的属于第一组, split 之后发生的属于第二组。

对于任何觉得正则表达式令人生畏的人,这里是“冗长”的解释性版本。

re.match(
    r'''^
        (        # Begin first group
          0*     # Allow for some number of leading zeroes
          [^0]+  # Match a series of non-zeroes
        )        # End first group
        0+       # Match some series of zeroes (the separator)
        (        # Begin second group
          [^0]   # Match the first non-zero character
          .*     # Match anything afterward
        )        # End second group
        $
    ''',
    '0104002',
    flags=re.VERBOSE).groups()

关于python函数返回第一个非零 strip 中间零并返回数字字符串的最后一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324964/

相关文章:

python - pipenv 可以搜索像 "pip search"这样的包吗?

python - 将整数列表转换为单个值

python - 给定列的 Numpy 最小值

python - 使用 ctypes 处理 128 位整数

python - 如何检查 tf.estimator.inputs.numpy_input_fn 的内容?

python - 神经网络 : designing Cost function "not differentiable"/Tensorflow

python - 通过 pipenv 自定义模块搜索路径(PYTHONPATH)

python - 在 Django 中更改项目名称

python - 使用 beautifulsoup 从多个 url 中抓取

python - 重构函数内的代码重复