如何删除python中的非字母数字字符,但保留一些特殊字符
我了解了如何使用以下函数删除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 我想保留一些特写人物,例如,我认为是数字。我应该如何编辑我的正则表达式
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