用习惯java的正则表达式,今天在python里也想用相同的正则处理一些文本,结果发现python和java的差别还挺大的,网上一顿搜索之后发现内容又是千篇一律,也满足不了我的需求,于是自己摸索后,总结python区别于java的几点注意事项:
目标:替换掉 汉字、英文、数字、常用中文标点符号 以外的其他字符
java实现:
python实现:
注意:
(1)python里正则表达式的写法与java相同,但是一定要在前面加”ur“,u的意思是表明后面有Unicode字符,这里汉字的范围为”\u4e00-\u9fa5“,这个是用Unicode表示的,所以前面必须要加”u“;字符”r“的意思是表示忽略后面的转义字符,这样简化了后面正则表达式里每遇到一个转义字符还得挨个转义的麻烦
(2)python里替换是用sub(”要替换为的字符“,”原始字符串“)函数,而不是replaceAll(”正则表达式“,”要替换为的字符“)
(3)这也是我栽了个大跟头的坑......编码问题!由于我是读的utf-8文件,python也指定的utf-8编码,不管怎么替换总会发现有乱码,原因是我的正则表达式是Unicode的(因为前面加了u,而且里面汉字使用Unicode表示的),而读进来的字符串是utf-8格式的,结果就是所有英文字符可以替换成功,而汉字就开始出现乱码了,解决方法是decode(‘utf-8’)把读进来的字符串转换成Unicode就可以了。
java转写python真是各种别扭哇~~~写下来省的以后忘了~