2

我有一个人工输入的数字数组,其中包含在实际数字开始之前随机数量的零。猜测示例会说更多:

entry_1="0000005452508"
entry_2="02965054"
entry_3="5487864"

我需要在这些重复的零结束后获取字符串,即第一个条目应导致 5452508。如果不固定,则为位数。列表非常庞大,所以我需要一些好的和快速的东西才能在这里工作。

任何想法表示赞赏。

4

4 回答 4

12

lstrip做你想做的事:

entry_1 = "0000005452508".lstrip("0")
entry_2 = "02965054".lstrip("0")
entry_3 = "5487864".lstrip("0")
于 2012-09-04T09:22:31.823 回答
3

lstrip,正如@dav1d所建议的那样,绝对是要走的路。

使用正则表达式,您可以使用以下方法来完成相同的操作:

> import re
> re.sub("^0+", "", "0000005452508")
"5452508"
于 2012-09-04T09:27:12.427 回答
1

我会.lstrip按照已经建议的那样去,但如果你真的想要一个正则表达式。

没有任何内容的子前导零:

re.sub(r'^0*', '', entry_1)
于 2012-09-04T09:29:07.170 回答
1

已经提供了很好的答案,但都在创建一个新的序列。为了提供替代方案,由于您已指定您的列表很大,因此复制可能是一个问题,您应该考虑使用itertools.dropwhile

制作一个迭代器,只要谓词为真,它就会从可迭代对象中删除元素;之后,返回每个元素。

例如:

import itertools
itertools.dropwhile(lambda x: x == '0', entry_1)
于 2012-09-04T09:41:08.943 回答