def remove_whitespaces(value):
"Remove all whitespaces"
p = re.compile(r'\s+')
return p.sub(' ', value)
上面的代码剥离了代码,但没有从值中删除“所有”空格。
由于
答案 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())