我已经看到了问题第一部分的许多解决方案,例如使用:
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'