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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。