分享交流
合作共赢!

python用正则表达式去除特殊字符的三种方法

s = '*\/:?"<>|' #这9个字符在Windows系统下是不可以出现在文件名中的
str1 = '\巴拉<1"!11【】>1*hgn/p:?|' #样例

方法1.

提取感兴趣(想要)的字符

a = re.findall('[\u4e00-\u9fa5a-zA-Z0-9]+',str1,re.S) #只要字符串中的中文,字母,数字
a = "".join(a)
print(a)

结果如下:

巴拉1111hgnp

方法2.

只去除不想要的,比如只去除不能作为文件名的字符

a = re.findall(r'[^\*"/:?\\|<>]',str1,re.S) 
a = "".join(a)
print(a)

结果如下:

巴拉1!11【】1hgnp

方法三、

因为训练word2vec模型,需要处理数据集发现其中有很多特殊符号,所以使用python3python3进行了数据预处理,去除了预料中的特殊符号,这里使用unicode加正则表示式来进行相关的匹配。

import re
string = "12345464我不是药神123456abcdefgABCVDFF?/ ,。,.:;:''';'''[]{}()()《》"
print(string)
12345464我不是药神123456abcdefgABCVDFF?/ ,。,.:;:''';'''[]{}()()《》
sub_str = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])","",string)
print(sub_str)
12345464我不是药神123456abcdefgABCVDFF

正则表达式的使用

             函数                                                                  说明
sub(pattern,repl,string)                        把字符串中的所有匹配表达式pattern中的地方替换成repl
[^**]                                                     表示不匹配此字符集中的任何一个字符
sub(pattern,repl,string)                        把字符串中的所有匹配表达式pattern中的地方替换成repl
[^**]                                                     表示不匹配此字符集中的任何一个字符
\u4e00-\u9fa5                                      汉字的unicode范围
\u0030-\u0039                                     数字的unicode范围
\u0041-\u005a                                     大写字母unicode范围
\u0061-\u007a                                     小写字母unicode范围

赞(0) 打赏
未经允许不得转载:琼杰笔记 » python用正则表达式去除特殊字符的三种方法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏