在同一行中转换为简体中文,并且不包含任何特殊字符或引号:"lower()和正则表达式?"

2024-09-28 22:25:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正则表达式,它消除了所有非alpha字符

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

如果我想使这个字符串小写,我必须定义一个新字符串(因为它们是不可变的),如
lowerString = newString.lower()
在我看来,必须生成第二个字符串才能执行“to lower”,这似乎很愚蠢,但是如果我从regex中删除A-Z,我会丢失所有不需要的大写字符。我只想要一个小写的最终产品。你知道吗

这可以不用lowerString或者更酷的工具来完成吗?可以在一行中完成吗?你知道吗


Tags: 字符串alpharestring定义def字符lower
1条回答
网友
1楼 · 发布于 2024-09-28 22:25:32
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。你知道吗

相关问题 更多 >