如何删除字符串中数字前的所有零(如果它等于 0,则保留最后一个 0)

How to remove all zeros before the number in a string (and keep the last 0 if it's equals to 0)

输入:“00012”/“00453403”/“0000000”/“123223”

输出:“12”/“453403”/“0”/“123223”

我可以用 3 行或更多代码来完成,但现在我觉得很愚蠢,因为我认为必须有一种方法可以在一行中完成(为了安全起见,我们假设 2 行)。

有人可以帮助增加世界上漂亮代码的数量吗? :)

    def remove_unnecessary_zero_in_the_beginning(nbr_as_str):
        while len(nbr_as_str) > 1 and nbr_as_str[0] == "0":
            nbr_as_str = nbr_as_str[1:]
        return nbr_as_str
    print(remove_unnecessary_zero_in_the_beginning("00012"))
import re
re.sub("^0+", "", n) or 0

您可以对匹配组使用正则表达式。这个匹配所有前导零然后捕获之后的所有数字。 \d*? 非贪婪匹配后跟 \d 确保至少最后一位数字始终存在,即使它是 0.

import re

def remove_unnecessary_zero_in_the_beginning(nbr_as_str):
    return re.match(r"0*(\d*?\d)$", t).group(1)

test = ["00012", "00453403", "0000000", "123223"]
for t in test:
    print(remove_unnecessary_zero_in_the_beginning(t))
str(int(mystring))

(字符太少)

你可以用这个

i = ["00012","00453403","0000000","123223"]
o = ["{0:d}".format(int(e)) for e in l]

输出:

o
Out[8]: ['12', '453403', '0', '123223']

假设您有一个输入列表,即:l1 = [ "00012" , "00453403" , "0000000" , "123223"]

代码可以是:

l1 = [ "00012" , "00453403" , "0000000" , "123223"]
test = list(map(lambda x :  x.strip('0') if int(x)!=0 else int(x),l1))
print(test)