Python 字符串从第一个非零字符拆分

Python string split from first non-zero character

我在 Python 中有一个 string 例如;

'00000001890573'

我想提取 1890573(从字符串中的第一个非零字符到最后一个字符)。

我试过这样拆分; '00000001890573'.split('0').. 它给了我 ['', '', '', '', '', '', '', '189', '573']

但这不是我想要的!!因为如果我组合最后两个字符串,我将得不到 1890573.

您可以使用 strip() 内置方法。

st = '00000001890573'
st.lstrip('0')

我想我明白了!!

int('00000001890573')

另一种方法是使用Python re模块:

re.search('[1-9].*$', '00000001890573')

这会找到从 1 到 9 的第一个数字,然后包括字符串的其余部分,直到行尾。

完成此操作的最简单方法是将字符串转换为整数,四舍五入,然后将其转换回字符串,如下所示:

string = "00000001890573"
answer = round(int(string))
answer = str(answer)

但是,这只有在它是整数时才有效,因为如果它不是整数,小数点将被截去,数字将四舍五入到最接近的整数。

如果您也需要它来处理小数,一个可能的答案是使用 for 循环,尽管如果您执行大量循环,这可能会变得效率低下:

string = "00000001890573"
for i in range(len(string)):
     if(string[i] != "0"):
          string = string[i:len(string)]
          break

我在 3.7 中测试了这两个解决方案,据我所知,它应该适用于 Python 的所有版本。

希望对您有所帮助!