http://www.php2python.com/wiki/function.preg-replace-callback/によると、re.subはPHPのpreg_replace_callbackと同等のPythonですが、phpバージョンでは文字列を照合するための配列を使用するため、次のことができます。複数の文字列を渡しますが、re.subは単一の文字列のみを受け取るように見えます。
それは正しいですか、それともPythonに関する私の弱い知識ですか?
http://www.php2python.com/wiki/function.preg-replace-callback/によると、re.subはPHPのpreg_replace_callbackと同等のPythonですが、phpバージョンでは文字列を照合するための配列を使用するため、次のことができます。複数の文字列を渡しますが、re.subは単一の文字列のみを受け取るように見えます。
それは正しいですか、それともPythonに関する私の弱い知識ですか?
配列でそれを行いたい場合は、リスト内包表記を使用できます。
>>> array_of_strings = ["3a1", "1b2", "1c", "d"]
>>> [re.sub("[a-zA-Z]", "", elem) for elem in array_of_strings]
["31", "12", "1", ""]
ただし、複雑な式を使用している場合は、おそらくre.compile
最初にパターンで使用する必要があります
必要な文字列は1つだけですhttp://docs.python.org/library/re.html#re.sub
パーティーに遅れて私は知っていますが、これが関数にカプセル化したい多くのステップのプロセスの要件である場合は、numpyvectorizeを介して処理できます。
def EliminateAlpha(elem):
return re.sub("[a-zA-Z]", "", elem)
ElimAlphaArray = np.vectorize(ElimateAlpha)
array_of_strings = ["3a1", "1b2", "1c", "d"]
print(ElimAlphaArray(array_of_strings))
['31' '12' '1' '']
もちろん、re.sub関数を直接vectorizeに使用することもできます。
ElimAlphaArr = np.vectorize(re.sub)
print(ElimAlphaArr("[a-zA-Z]", "", array_of_strings))
['31' '12' '1' '']