在数字串的随机len之后删除0的随机len

时间:2018-07-15 00:35:12

标签: python python-3.x

我目前正在Python 3.x中获得一个随机数列表,以len的随机len结尾。因此,例如,我得到了以下一组随机数字字符串:

String 1 = 203502000000
String 2 = 302933000
String 3 = 000023123389270

是否可以删除在每个字符串末尾找到的一系列0,而不删除其他在字符串3开头发现的其他0系列?谢谢。

2 个答案:

答案 0 :(得分:2)

假设变量是您声明的字符串,而不是问题中的整数,那么您正在寻找rstrip

>>> s1 = '203502000000'
>>> s1.rstrip('0')
'203502'

这将从字符串中删除所有结尾的零,但在其他任何地方都不会删除

要将其应用于整个列表,您可以使用列表理解:

[s.rstrip('0') for s in my_list]

答案 1 :(得分:0)

字符串操作方法

您可以使用以下事实:转换为整数时会忽略前导零。这样,您将反转字符串,进行整数转换,然后转换回字符串,然后再次反转。这是一个示例:

In [20]: s
Out[20]: '125647124004170000'

In [21]: s[::-1]
Out[21]: '000071400421746521'

In [22]: int(_)
Out[22]: 71400421746521

In [23]: str(_)
Out[23]: '71400421746521'

In [24]: _[::-1]
Out[24]: '12564712400417'

在第21和24行中,我们使用带有-1步骤的完整切片,该切片将反转字符串。

作为一种单列列表理解,您可以对字符串s执行以下操作:

[str(int(s[::-1]))[::-1] for s in strings_list]

数值方法

一种简单的方法是使用整数除法将字符串的整数强制转换除以10,直到时间整数除法产生与浮点除法不同的结果。完成后,如果您的用例需要将其转换回字符串。根据最后的零个数,花费的时间是线性的。最糟糕的情况是O(n),其中n是字符串的长度。

In [7]: s = '125647124004170000'

In [8]: b = int(s)
Out[8]: 125647124004170000

(在@AChampion评论后修改)

In [9]: while b % 10 == 0:
   ...:     b //= 10

In [10]: b
Out[10]: 12564712400417

In [11]: str(b)
Out[11]: '12564712400417'