我需要从字符串中删除特殊字符,但我还需要保留空格。到目前为止,这是我的代码:
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
。
答案 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]+