首页 > 解决方案 > Python - 多个变量的子

问题描述

通过 a 传递多个字符串变量的优雅/pythonic 方式是sub什么?我需要传递多个变量来sub替换出现在每个变量中的字符串块。

我想避免的工作代码:

import re

txt = "aaa"
txt2 = "aaaCCC"

txt = re.sub(r'aaa', 'bbb', txt)
txt2 = re.sub(r'aaa', 'bbb', txt2)

print(txt)
print(txt2)

标签: pythonregex

解决方案


您可以使用 afunctools.partial创建一个mappable 函数:

mappable = functools.partial(re.sub, 'aaa', 'bbb')

这大致相当于做

mappable = lambda t: re.sub('aaa', 'bbb', t)

主要区别在于partial根据底层函数制作了一个具有花哨名称和其他属性的适当函数包装器。

map您可以使用 a或理解进行映射:

txt, txt2 = map(mappable, (txt, txt2))

打开生成器的包装会对其进行评估。列表推导也是如此:

result = [mappable(t) for t in (txt, txt2)]

推荐阅读