我是一名新的python学习者,从一些字符串练习开始。我想知道“ 火柴盒”中的“ 替换”功能实际上如何工作。
import re
a = 'UPPER PYTHON, lower python, Mixed Python'
def matchcase(word):
def replace(m):
text = m.group()
if text.isupper():
return word.upper()
elif text.islower():
return word.lower()
elif text[0].isupper():
return word.capitalize()
else:
return word
return replace
print (matchcase('conran'))
print (re.sub('python',matchcase('conran'),a , flags=re.IGNORECASE))
输出:UPPER CONRAN,下康兰,混合康兰
答案 0 :(得分:1)
re.sub可以接受在每次匹配时都调用的函数参数,而不是文本替换。
您的外部函数返回另一个可以访问传递的字符串的函数(高阶函数)(这称为闭包)。因此,在相同情况下,re.sub会使用“ python”调用此内部函数,并返回“ conran”。