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 に答える