python 正则表达式过滤特殊字符

Python010

python 正则表达式过滤特殊字符,第1张

>>>import re

>>>string = "123我adfasdf?(((q,[]"

>>>string

'123我adfasdf?(((q,[]'

>>>sub_str = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])","",string)

>>>sub_str

'123我adfasdfq'

汉字也被替换掉了:utf-8

import numpy as np

import pandas as pd

import re

df=pd。

#codingcidnum'.keyword = df,')

发现结果把所有的非数字及字母全部替换掉了keyword')

df/, '.str,''[^a-zA-Z0-9_\]

#将双引号过滤掉

#将NA的替换掉g

df=df.keyword = dfpath'

df,'name'home/.keyword, '.replace(r0'file_20150625'.fillna(')

r=u',header=Nonecid'.str.lower()

i = 0

df, sep='.keyword,字母意外的所有特殊符号,数字u9fa5]'u4e00-\t'想过滤掉除文字。原因是什么啊.read_csv('.columns=[',具体解决方案如下:

解决方案1:

改成r="\W"试试

解决方案2:

=u'u4e00-\[^a-zA-Z0-9_\u9fa5]'

解决方案3:

你自己先要确定“乱码”的定义,例如韩文(unicode),如果你装了韩文字体,那是可以显示的,不是乱码,但没装的话就是问号一堆,如果是韩文

(euc-kr),在汉字系统那只是一堆无语义的汉字……可能这个举例扯远了,你觉得不会有这种情况,但我只是提醒一下会有意料之外的情况

所以,你需要一个白名单,把你允许的字符unicode范围都列出来,因为肯定不止汉字,像你列出的文件名中就有空格

另外,没必要逐个字符检查,直接用re.sub去除白名单外的字符就可以了