Python 从字符串中删除符号,但保留空白
我需要从字符串中删除特殊字符,但我还需要保留空格。这是我目前的代码:Python 从字符串中删除符号,但保留空白,python,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
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
预期结果应该是没有正则表达式的她是我的朋友Adelaide
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)])
这里匹配的字符不是A-Z、A-Z或0-9
将这些字符替换为空字符串;也就是说,你移除它们
如果要删除其他字符,只需将其添加到此列表中即可\s
表示空白,因此:
[^A-Za-z0-9\s]+
因此,修改正则表达式以保留空格。我错过了什么?@omri_saadon怎么了?到底什么是“特殊角色”?一旦您定义了通过正则表达式或without@omri_saadon我不认为这是所建议的改变。(提示:在character类中添加一个空格。)您不仅需要删除特殊字符,还需要转换一些字符。像
i
到i
。为什么给我一个-1?这个问题清楚地表明输入字符串是UTF-8。
[^A-Za-z0-9\s]+