gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:59 25 4
gpt4 key购买 nike

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

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

关于python - .lower() 和正则表达式在同一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48469708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com