python pandas 过滤某列特殊字符求助
想过滤掉除文字,数字,字母意外的所有特殊符号。#coding:utf-8importnumpyasnpimportpandasaspdimportredf=pd.read...
想过滤掉除文字,数字,字母意外的所有特殊符号。
#coding:utf-8
import numpy as np
import pandas as pd
import re
df=pd.read_csv('/home/file_20150625',header=None, sep='\t')
df.columns=['keyword','cidnum','cid','path', 'name']
#将双引号过滤掉
#将NA的替换掉g
df=df.fillna('0')
r=u'[^a-zA-Z0-9_\u4e00-\u9fa5]'
df.keyword = df.keyword.str.lower()
i = 0
df.keyword = df.keyword.str.replace(r, '')
发现结果把所有的非数字及字母全部替换掉了,汉字也被替换掉了。原因是什么啊? 展开
#coding:utf-8
import numpy as np
import pandas as pd
import re
df=pd.read_csv('/home/file_20150625',header=None, sep='\t')
df.columns=['keyword','cidnum','cid','path', 'name']
#将双引号过滤掉
#将NA的替换掉g
df=df.fillna('0')
r=u'[^a-zA-Z0-9_\u4e00-\u9fa5]'
df.keyword = df.keyword.str.lower()
i = 0
df.keyword = df.keyword.str.replace(r, '')
发现结果把所有的非数字及字母全部替换掉了,汉字也被替换掉了。原因是什么啊? 展开
3个回答
2015-06-30
展开全部
你自己先要确定“乱码”的定义,例如韩文(unicode),如果你装了韩文字体,那是可以显示的,不是乱码,但没装的话就是问号一堆,如果是韩文(euc-kr),在汉字系统那只是一堆无语义的汉字……可能这个举例扯远了,你觉得不会有这种情况,但我只是提醒一下会有意料之外的情况
所以,你需要一个白名单,把你允许的字符unicode范围都列出来,因为肯定不止汉字,像你列出的文件名中就有空格
另外,没必要逐个字符检查,直接用re.sub去除白名单外的字符就可以了
所以,你需要一个白名单,把你允许的字符unicode范围都列出来,因为肯定不止汉字,像你列出的文件名中就有空格
另外,没必要逐个字符检查,直接用re.sub去除白名单外的字符就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
r=u'[^a-zA-Z0-9_\u4e00-\u9fa5]'
这个的问题
这个的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成r="\W"试试
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询