从字符串中删除符号但保留空格

时间:2017-03-08 16:02:40

标签: python

我需要从字符串中删除特殊字符,但我还需要保留空格。到目前为止,这是我的代码:

from unidecode import unidecode
import re

def cleanstr(string):
    if isinstance(string, str):
        string = string.decode('utf-8')
    string = unidecode(string)
    string = re.sub('[^A-Za-z0-9]+', '', string)
    return string

print cleanstr("She's my friend Adélaïde")
>> ShesmyfriendAdelaide

预期结果应为Shes my friend Adelaide

2 个答案:

答案 0 :(得分:0)

没有正则表达式

import string

sentence = "vg583$%#jgv f_vrefg fh4ufrh4 %# dhejrfh #"

print "".join([s for s in sentence if s in string.ascii_letters + string.digits + ' '])

输出

'vg583jgv fvrefg fh4ufrh4  dhejrfh'

我承认,目前无法处理unicode,但您可能需要稍微调整一下。

我认为你的最终解决方案(如果你想要处理unicode)应该是这样的:

u''.join([transform_char(c) for c in your_unicode_string if condition_met(c)])

答案 1 :(得分:0)

[^A-Za-z0-9]+

这里你匹配的不是A-Z,a-z或0-9的字符。

用空字符串替换这些字符;也就是说,你删除它们。

如果您想删除其他字符,只需将它们添加到此列表中即可! \s表示空格,所以:

[^A-Za-z0-9\s]+