python用正则表达式替换掉汉字、标点等指定字符以外的特殊字符
2012-10-31 21:48
886 查看
用习惯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真是各种别扭哇~~~写下来省的以后忘了~
目标:替换掉 汉字、英文、数字、常用中文标点符号 以外的其他字符
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真是各种别扭哇~~~写下来省的以后忘了~
相关文章推荐
- 替换除汉字字母数字和指定的字符或特殊符号外的所有内容的正则表达式
- 使用正则表达式替换报表名称中的特殊字符(推荐)
- C# 用正则表达式替换字符串中所有特殊字符
- Javascript正则表达式把所有空格替换为指定字符
- python核心编程-正则表达式之-重复、特殊字符、子组
- Java处理特殊字符替换(正则表达式)
- C# 关于字符串中 符合正则表达式的指定字符的替换的方法
- 正则表达式:去除标点符合和特殊字符
- js,python正则表达式对特殊字符的处理
- js 正则表达式 匹配除汉字,字母,数字,逗号,句号外的特殊字符(用来规范输入内容)
- js 利用正则表达式替换字符串中指定字符
- <Python高级全栈开发工程师-1>学习过程笔记【181-184】正则表达式 <特殊字符><函数>
- C# 用正则表达式替换字符串中所有特殊字符
- Java正则表达式替换所有特殊字符
- python正则表达式特殊字符简要分析
- regex 正则表达式 需要转义的特殊字符 以及 java、python实现
- C#正则表达式替换特殊字符
- python字符串转义与正则表达式特殊字符转义
- C# 用正则表达式替换字符串中所有特殊字符
- 特殊字符导致用正则表达式进行字符串替换失败,Java replaceAll()方法报错Illegal group reference