Python 转义正则表达式中的字符时出错

Python 转义正则表达式中的字符时出错,python,regex,python-3.x,Python,Regex,Python 3.x,我试图删除(编码错误)字符串中出现的所有\uxxx,但始终出现以下错误: 引发源。错误(“未完成转义%s”%escape,len(转义)) sre_constants.error:位置0处的转义\u不完整 所以我尝试在控制台python3.5.2中复制: s = '\u2000' s = re.sub('\\u(.){4}', '', s) 给了我同样的错误。所以我试着加上“r”,但没有任何作用: >>> s = re.sub(r'\\u(.){4}', '', s) >

我试图删除(编码错误)字符串中出现的所有\uxxx,但始终出现以下错误:

引发源。错误(“未完成转义%s”%escape,len(转义)) sre_constants.error:位置0处的转义\u不完整

所以我尝试在控制台python3.5.2中复制:

s = '\u2000'
s = re.sub('\\u(.){4}', '', s)
给了我同样的错误。所以我试着加上“r”,但没有任何作用:

>>> s = re.sub(r'\\u(.){4}', '', s)
>>> s
'\u2000'
因为它现在尝试匹配“\u”,所以它是有意义的

但当我尝试时:

s = '\u2000'
s = re.sub(r'\u(.){4}', '', s)
我也得到了错误

我认为我的正则表达式还可以,至少它在以下方面起作用:

我错过了什么


关于

python中还有另一种快速方法可以实现同样的效果,似乎您正在尝试删除所有的
unicode
字符,因此,解决方法是只保留字符串中的
ascii
字符,如下所示:

s = '\u2000'
s = s.encode('ascii', 'ignore').decode('ascii')

尝试将
s
指定为
s=r'\u2000'
s
是具有unicode码点2000的单个字符。您的正则表达式搜索反斜杠、
u
字符和4位数字将与
s
@sardok>>s=r'\u2000'>>>s=re.sub('\\u(.){4}','',s)完全相同的错误当然它会抛出相同的错误。试试另一个正则表达式。试试这个@Maxime,
re.sub(r'\\u(..{4}','',r'\u2000')