Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串中删除符号,但保留空白_Python - Fatal编程技术网

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]+