如何在此示例中从Python列表中删除空格?

时间:2016-01-12 18:00:01

标签: python regex

我目前正在过滤掉此列表中的所有非字母数字字符。

cleanlist = []
    for s in dirtylist:
        s = re.sub("[^A-Za-z0-9]", "", str(s)) 
        cleanlist.append(s)

从此列表中过滤出空格的最有效方法是什么?

3 个答案:

答案 0 :(得分:0)

这将从字符串中删除空格,并且不会将空字符串添加到cleanlist

cleanlist = []
    for s in dirtylist:
        s = re.sub("[^A-Za-z0-9]", "", str(s).strip()) 
        if s:
            cleanlist.append(s)

答案 1 :(得分:0)

我实际上会使用列表理解,但你的代码已经很有效了。

pattern = re.compile("[^A-Za-z0-9]")
cleanlist = [pattern.sub('', s) for s in dirtylist if str(s)]

此外,这是一个副本:Stripping everything but alphanumeric chars from a string in Python

答案 2 :(得分:0)

最大的效率来自于使用正则表达式处理的全部功能:不要遍历列表。 其次,不要将单个字符从字符串转换为字符串。非常简单:

cleanlist = re.sub("[^A-Za-z0-9]+", "", dirtylist)

可以肯定的是,我针对一些列表理解和字符串替换方法对此进行了测试;以上是最快的至少20%。