Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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_Regex - Fatal编程技术网

如何删除python中的非字母数字字符,但保留一些特殊字符

如何删除python中的非字母数字字符,但保留一些特殊字符,python,regex,Python,Regex,我了解了如何使用以下函数删除python中的特殊非字母数字字符: p_nonalphanum = re.compile('\W+') def removeNonAlphaNum(string): m = p_nonalphanum.match(string) if m: string = string[m.end():] return string 我想保留一些特写人物,例如,我认为是数字。我应该如何编辑我的正则表达式

我了解了如何使用以下函数删除python中的特殊非字母数字字符:

p_nonalphanum = re.compile('\W+')

def removeNonAlphaNum(string):
        m = p_nonalphanum.match(string)
        if m:
            string = string[m.end():]
        return string
我想保留一些特写人物,例如,我认为是数字。我应该如何编辑我的正则表达式

例如:从“•½杯面粉”“½杯面粉”


可以使用否定字符类并添加所有要保留的字符

你可以这样做:

p_nonalphanum = re.compile('[^\w½¾]+')
print (p_nonalphanum.sub('', test))

不要在正则表达式中手动添加所需的每个字符,使用内置的
isalnum
函数

>>> s = "• ½ cup flour -> ½ cup flour"
>>> def only_alphanum(s):
...     s = unicode(s, "utf-8")
...     return ' '.join(c for c in s.split() if c.isalnum())
... 
>>> print only_alphanum(s)
½ cup flour ½ cup flour
这将让您捕获任何分数,而不仅仅是在正则表达式中组装的分数列表(可能很快就会变长)


到目前为止,你确定这对你有效吗<代码>>>>removeNonAlphaNum('-hello-'))
'hello-'
只有以字符串开头的非alpha-num字符对我来说很重要,但这可以扩展这听起来像是第一个好的解决方案,因为我想编辑我的正则表达式,但我有一条错误消息:SyntaxError:non-ASCII字符'\xc2'在文件中OK我只需要在python脚本中添加第一行:#--编码:utf-8--
>>> s = "• ¼ cup oats -*(*&!!"
>>> print only_alphanum(s)
¼ cup oats
>>> def remove_unwanted(s):
...     '''• ½ cup flour -> ½ cup flour'''
...     allowed = '[\w½¾]+'
...     return ' '.join(re.findall(allowed, s))
... 
>>> print remove_unwanted('• ½ cup flour ->')
½ cup flour