删除字符串中的数字和所有连接字符



我已经看到了问题第一部分的许多解决方案,例如使用:

name = 'Example 01 string 1a%'
new_name = ''.join(i for i in name if not i.isdigit())
print(new_name)
>> 'Example  string a%'

然而,我希望输出也用一个空格替换2+个相邻的空格,以及连接到删除的数字(不包括空格(的任何字符,所以我在这个例子中期望的结果是:

>> 'Example string'

我知道,例如,要删除双空格,你可以简单地使用:

new_name.replace('  ', ' ')

然而,这只适用于双空间。我不知道如何将其扩展到任意数量,以防字符串有多组数字,这些数字会被删除并留下大量空间。

所以我的问题是,如何清理字符串以删除数字和与这些数字相连的任何字符(不包括空格(,然后用单个空格替换任何大的空格组?

实现这一点的一种方法是通过内置的re库使用regex。

本质上,exp提取两个或多个相邻的字母,并将结果返回到一个列表中,该列表使用join函数转换为字符串,就像您当前使用的那样。

这个精确方法需要注意的是,搜索字符串的长度必须至少为两个字母字符。但是,如果您想增强表达式,regex功能会四处查找。

import re
name = 'Example 01 string 1a%'
exp = '([a-zA-Z]{2,})'
' '.join(re.findall(exp, name))

输出:

>>> 'Example string'

最新更新