我目前正在Python 3.x中获得一个随机数列表,以len的随机len结尾。因此,例如,我得到了以下一组随机数字字符串:
String 1 = 203502000000
String 2 = 302933000
String 3 = 000023123389270
是否可以删除在每个字符串末尾找到的一系列0,而不删除其他在字符串3开头发现的其他0系列?谢谢。
答案 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'