用于删除空格的正则表达式

时间:2010-01-17 17:58:05

标签: python regex function

def remove_whitespaces(value):
    "Remove all whitespaces"
    p = re.compile(r'\s+')
    return p.sub(' ', value)

上面的代码剥离了代码,但没有从值中删除“所有”空格。

由于

6 个答案:

答案 0 :(得分:6)

最快的通用方法避开了RE,支持字符串快速,强大的.translate方法:

import string
identity = string.maketrans('', '')

def remove_whitespace(value):
  return value.translate(identity, string.whitespace)

在2.6中,它更简单,只是

  return value.translate(None, string.whitespace)

请注意,这适用于“普通”Python 2. *字符串,即bytestrings - Unicode的字符串'.translate方法有些不同 - 它需要一个参数,它必须是{{1的映射Unicode字符的值为Unicode字符串,或ord表示删除。即,利用None方便的.fromkeys课程方法:

dict

删除完全相同的字符集。当然,Unicode还有更多可以考虑空格并想要删除的字符 - 因此您可能希望根据模块unicodedata中的信息构建映射nospace = dict.fromkeys(ord(c) for c in string.whitespace) def unicode_remove_whitespace(value): return value.translate(nospace) ,而不是使用这种更简单的方法基于模块string

答案 1 :(得分:3)

p.sub(' ', value)

应该是

p.sub('', value)

前者用一个空格替换所有空格,后者替换为空格。

答案 2 :(得分:1)

也许 value.join(p.split())''。join(value.split())可能对你有用吗?

答案 3 :(得分:1)

re.sub('\s*', '', value)也应该有用!

答案 4 :(得分:0)

在这种情况下,

re.sub(r'\s', '', value)功能对我很有用。

答案 5 :(得分:0)

@OP,在外面编译正则表达式模式,因此每次使用该过程时都不必调用re.compile。你还要替换回一个空格,那不是删除空格吗?

p = re.compile(r'\s+')
def remove_whitespaces(p,value):
    "Remove all whitespaces"    
    return p.sub('', value)

最后,另一种不使用正则表达式的方法是在空格上拆分并再次连接它们

def remove_whitespaces(value):
    "Remove all whitespaces"    
    return ''.join(value.split())