从字符串右边删除一定数量的零

Delete a certain number of zeros from right of a string

我正在尝试从右边删除一定数量的零。例如:

"10101000000"

我想删除 4 个零...并得到:

"1010100"

我试着做 string.rstrip("0")string.strip("0") 但这会从右边删除所有的零。我怎样才能做到这一点?

这个问题不是重复的,因为我不能使用导入。

对于已知数量的零,您可以使用切片:

s = "10101000000"
zeros = 4

if s.endswith("0" * zeros):
    s = s[:-zeros]

您尝试通过这种方式从字符串中拆分出最后 4 个字符:

string[:-4]

rstrip 从末尾删除传递的字符集中的所有字符。您可以像这样删除尾随零:

s = s[:-4] if s[-4:] == "0"*4 else s

您可以使用正则表达式

>>> import re
>>> mystr = "10101000000"
>>> numzeros = 4
>>> mystr = re.sub("0{{{}}}$".format(numzeros), "", mystr)
>>> mystr
'1010100'

如果字符串不以四个零结尾,这将使字符串保持原样

你也可以检查然后切片

if mystr.endswith("0" * numzeros):
    mystr = mystr[:-numzeros]
>>> s[:-4]+s[-4:].replace('0000','')

这是我的解决方案:

number = "10101000000"
def my_rstrip(number, char, count=4):
    for x in range(count):
        if number.endswith(char):
            number = number[0:-1]
        else:
            break
    return number

print my_rstrip(number, '0', 4)

不要忘记转换为 str

import re

a = 10101000000

re.sub("0000$","", str(a))