Skip to main content
 首页 » 编程设计

python之.lower() 和正则表达式在同一行

2024年08月16日45dyllove98

我有一个消除所有非字母字符的正则表达式

def genLetters(string): 
  regex = re.compile('[^a-zA-Z]') 
  newString = regex.sub("", string)   

如果我想把这个字符串变成小写,我必须定义一个新的字符串(因为它们是不可变的),比如
lowerString = newString.lower()
对我来说,我必须制作第二个字符串只是为了降低它,这似乎很愚蠢,但是如果我从正则表达式中删除 A-Z ,我会丢失任何我没有的大写字符想。我只想要所有小写字母的最终产品。

这可以不用 lowerString 来完成吗,或者更酷,可以在一行中完成吗?

请您参考如下方法:

newString = regex.sub("", string).lower() 

试着把“函数返回”想象成“用函数的返回值代替函数调用”。例如在上面的例子中,regex.sub 首先被计算,你应该想象那个调用被返回值所取代:

newString = "some String after substitution".lower() 

这意味着您可以根据 regex.sub 的返回值对字符串执行任何操作。您还可以根据 lower() 的返回值调用方法。

这也意味着您可以在一行中完成所有功能!

newString = re.compile('[^a-zA-Z]').sub("", string).lower() 

虽然这可能不太可读。

顺便说一下,python 中的标准命名约定不是驼峰式而是带下划线,所以 newString 应该是 new_string。