Python字符串中的大小写不敏感

时间:2009-04-24 23:42:45

标签: python

我知道您可以使用ctypes库对字符串执行不区分大小写的比较,但是我也想执行不区分大小写的替换。目前,我知道这样做的唯一方法是使用正则表达式,并且通过它可能看起来有点差。

是否有不区分大小写的replace()?

3 个答案:

答案 0 :(得分:10)

您可以按照docs中的说明为re模块中的函数提供标志re.IGNORECASE。

matcher = re.compile(myExpression, re.IGNORECASE)

答案 1 :(得分:5)

使用re是最佳解决方案,即使您认为它很复杂。

要用'abc'替换所有出现的'ABC''Abc''Python'等,请说:

re.sub(r'(?i)abc', 'Python', a)

示例会话:

>>> a = 'abc  asd   Abc  asd  ABCDE    XXAbCXX'
>>> import re
>>> re.sub(r'(?i)abc', 'Python', a)
'Python  asd   Python  asd  PythonDE    XXPythonXX'
>>> 

请注意,在regexp的开头嵌入(?i)会使其区分大小写。另请注意regexp的r'...'字符串文字(在这种特定情况下是冗余的,但只要你的正则表达式中有反斜杠(\)就会有所帮助。

答案 2 :(得分:1)

最简单的方法是将其全部转换为小写然后执行替换。但如果您想保留原始案例,这显然是一个问题。

我会做一个正则表达式替换,你可以指示正则表达式引擎一起忽略套管。

有关示例,请参阅this site