0

私はPythonが初めてで、「[AZ]0」のすべての出現を文字列の[AZ]部分に置き換えて、ゼロで埋められた特定の数字を取り除く方法を探しています。このスニペットを使用して、処理中のフィールドから出現全体を取り除きました。

import re
def strip_zeros(s):
    return re.sub("[A-Z]0", "", s)

test = strip_zeros(!S_fromManhole!)

「[AZ]0」式の先頭文字を削除せずに、同じタイプの手順を実行するにはどうすればよいですか?

前もって感謝します!

4

3 に答える 3

2

後方参照を使用します。

http://www.regular-expressions.info/refadv.html「\1 から \9 1 番目から 9 番目のキャプチャ括弧のペアの間に一致するテキストに置換されます。」

http://docs.python.org/2/library/re.html#re.sub「\6 などの後方参照は、パターン内のグループ 6 に一致する部分文字列に置き換えられます。」

テストされていませんが、次のようになります。

return re.sub(r"([A-Z])0", r"\1", s)

キャプチャ グループ内に最初の文字を配置し、それを参照する\1

于 2013-03-13T05:06:42.433 に答える
0

次のようなものを試すことができます

In [47]: s = "ab0"

In [48]: s.translate(None, '0')
Out[48]: 'ab'

In [49]: s = "ab0zy"

In [50]: s.translate(None, '0')
Out[50]: 'abzy'
于 2013-03-13T05:04:29.710 に答える
0

私はこのケースに対するパタシュの答えが好きですが、完全を期すために、より複雑なケースでは、置換文字列の代わりに関数を re.sub に渡す方がきれいかもしれません。この関数は、単一の一致オブジェクトを受け取り、文字列を返す必要があります。

>>> def strip_zeros(s):
...     def unpadded(m):
...             return m.group(1)
...     return re.sub("([A-Z])0", unpadded, s)
...
>>> strip_zeros("Q0")
'Q'
于 2013-03-20T15:23:09.307 に答える