1

次の例の文字列があり、ゼロのセットを 1 つだけ削除したいと考えています。

例の文字列は

AAL000007200100000787777388300000

最初のゼロのセットのみを削除し、残りはそのままにしたいと思います。で終わりたい

AAL7200100000787777388300000

私は次のことを試しましたが、それは常に貪欲すぎて、2番目のゼロのセットも取ります!

#!/usr/bin/env python3
import re

suffixdrop = re.split("\B0+\B", "AAL000007200100000787777388300000", re.I)
if suffixdrop: #found a suffix here
        print(suffixdrop)

印刷結果は、

['AAL'、'72'、'100000787777388300000']

4

3 に答える 3

4

\B単語境界の反対に一致します。これは、ここで必要なものとは思えません。

数字以外の文字の後の連続する 0 の最初のセットを削除する場合は、次のようにします。

In [7]: print x
AAL000007200100000787777388300000

In [8]: print re.sub("^(\D+)0+", r"\1", x)
AAL7200100000787777388300000

re.sub("^(\D+)0+", r"\1", x)は、「行頭に任意の数の非数字文字が続き、その後に任意の数の 0 文字が続く」ことを意味し、それを非数字文字の最初のグループに置き換えます。

于 2012-07-05T18:25:32.787 に答える
0

私はこれをします:

re.sub(r'0+', '', "AAL000007200100000787777388300000", count=1)
于 2012-07-05T18:26:12.723 に答える
0

正規表現の一致(?<=^\D*?)(0+)(?=.*$)を空の文字列に置き換えます

于 2012-07-05T18:33:09.683 に答える