python的re.sub是否采用数组作为输入参数?

2024-06-16 10:37:52 发布

您现在位置:Python中文网/ 问答频道 /正文

根据http://www.php2python.com/wiki/function.preg-replace-callback/re.sub是PHP的preg_replace_回调的python等价物,但是PHP版本为要匹配的字符串使用一个数组,因此可以传递多个字符串,但是re.sub似乎只使用一个字符串。

是对的,还是我对python的了解不够?


Tags: 字符串版本recomhttpwwwwikicallback
3条回答

晚到派对我知道,但如果这是您希望封装到函数中的多步骤过程的要求,那么您可以通过numpy矢量化处理:

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函数进行矢量化:

ElimAlphaArr = np.vectorize(re.sub)
print(ElimAlphaArr("[a-zA-Z]", "", array_of_strings))

['31' '12' '1' '']

如果你想在一个数组中进行,你可以使用列表理解,例如

>>> array_of_strings = ["3a1", "1b2", "1c", "d"]
>>> [re.sub("[a-zA-Z]", "", elem) for elem in array_of_strings]
["31", "12", "1", ""]

不过,如果您使用的是复杂的表达式,则可能应该首先在模式上使用^{}

相关问题 更多 >