Python正则表达式识别中文数字
使用Python2.7 我正在尝试编写一个正则表达式,它可以识别任何utf-8数字0-9(不仅仅是阿拉伯数字,还有简体中文)和任何unicode单词字符 例如,我有:Python正则表达式识别中文数字,python,regex,utf-8,Python,Regex,Utf 8,使用Python2.7 我正在尝试编写一个正则表达式,它可以识别任何utf-8数字0-9(不仅仅是阿拉伯数字,还有简体中文)和任何unicode单词字符 例如,我有: 4_1424336,P-九 (九 是中文(9) 我想返回: 9_9999999,A-9 我目前的职能是: def multiple_replace(myString): myString = re.sub(ur'(?u)[^\W_*\d]', u'A', myString) myString = re.sub
4_1424336,P-九
(九 是中文(9)
我想返回:
9_9999999,A-9
我目前的职能是:
def multiple_replace(myString):
myString = re.sub(ur'(?u)[^\W_*\d]', u'A', myString)
myString = re.sub(ur'(?u)[\d]', u'9', myString)
return myString
编辑:
也试过…同样的结果
def multiple_replace(myString):
myLetters_regex = re.compile(r'[^\W\d_]', re.UNICODE)
myNumbers_regex = re.compile(r'[\d]', re.UNICODE)
myString = myNumbers_regex.sub('9', myString)
myString = myLetters_regex.sub('A', myString)
return myString
我得到
9_9999999,A-A (i.e. 九 is recognized is flagged as an 'A' instead of a '9')
因此,我的问题是:
1) 是否有其他方法写入字母数字中不包含数字
2) 关于使用python正则表达式识别中文数字,我缺少什么吗?Check,一个绑定到正则表达式引擎的python
有关数字:
re.sub(ur'\p{N}', '9')
信件:
re.sub(ur'\p{L}', 'A')
对于#2,请在定义正则表达式时尝试设置
re.UNICODE
标志。继续挖掘#1-一旦\W*\d
和\d
类能够识别unicode,那么排除\W*\d
的字符类可能是最好的选择。虽然*
通常不被认为是单词字符,所以我认为您不需要明确禁止它。好了,1的答案是否定的。字符类是固定的。不过,为了方便起见,你可以自己定义。请看这篇文章:这个角色的代码点是什么?@Peter…请看OP(已编辑)。re.UNICODE标志没有什么区别。我知道之前在python re模块中发现过错误…这可能是一个错误吗?嗯…你不能在Windows机器上安装吗?我已经尝试过(甚至在Cygwin中进行了一轮测试——结果是出现了一系列错误,并且“error:command'gcc'失败,退出状态为1”)。查看GitHub回购协议并没有带来多少关于这方面的见解。。。