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 的所有版本。
希望对您有所帮助!
我在 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 的所有版本。
希望对您有所帮助!