python字符串忽略大小写的搜索替换方法

为了在文本操作时忽略大小写,你需要在使用re模块的时候给这些操作提供re.IGNORECASE标志参数。比如:

>>> text=’UPPER PYTHON, lower python, Mixed Python’>>> re.findall(‘python’, text, flags=re.IGNORECASE)[‘PYTHON’,’python’,’Python’]

>>> re.sub(‘python’,’snake’, text, flags=re.IGNORECASE)’UPPER snake, lower snake, Mixed snake’

>>>

最后的那个例子揭示了一个小缺陷,替换字符串并不会自动跟被匹配字符串的大小写保持一致。为了修复这个,你可能需要一个辅助函数,就像下面的这样: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

下面是使用上述函数的方法:

>>> re.sub(‘python’, matchcase(‘snake’), text, flags=re.IGNORECASE)’UPPER SNAKE, lower snake, Mixed Snake’

>>>

译者注:matchcase(‘snake’)返回了一个回调函数(参数必须是match对象),前面一节提到过,sub()函数除了接受替换字符串外,还能接受一个回调函数。讨论

对于一般的忽略大小写的匹配操作,简单的传递一个re.IGNORECASE标志参数就已经足够了。但是需要注意的是,这个对于某些需要大小写转换的Unicode匹配可能还不够。

未经允许不得转载:惠生活366 » python字符串忽略大小写的搜索替换方法

赞 (0) 打赏