用python进行数据预处理,过滤特殊符号,英文和数字。(适用于中文分词)

要进行中文分词,必须要求数据格式全部都是中文,需求过滤掉特殊符号、标点、英文、数字等。当然了用户可以根据自己的要求过滤自定义字符。
实验环境:python、mysql

实验目的:从数据库读取数据,过滤点无用字符,然后存入到数据库一个表里面。

代码如下:

# -*- coding: UTF-8 -*-
import MySQLdb as mdb
import  re
def createStatistics():
    """ 创建新的微博内容表 """
    try:
        con = mdb.connect('localhost', 'root', '数据库密码', '数据库',charset='utf8');#
        with con:
            #获取连接的cursor,只有获取了cursor,我们才能进行各种操作
            cur = con.cursor()
            #创建一个数据表 writers(id,name)
            cur.execute("DROP TABLE IF EXISTS new")
            cur.execute("CREATE TABLE new (\
            uid varchar(255) NOT NULL,\
            mid varchar(255) NOT NULL,\
            time date ,\
            content text CHARACTER SET utf8 NOT NULL\
            ) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
            cur.execute("SELECT * FROM old")
            numrows = int(cur.rowcount)
            rows = cur.fetchall()
            r1 = u'[a-zA-Z0-9’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’![\\]^_`{|}~]+'#用户也可以在此进行自定义过滤字符
            r2 = u'\s+;'
            for i in range(numrows):

                tem=re.sub(r1, '', rows[i][3]) #过滤内容中的各种标点符号
                cur.execute("INSERT INTO new(uid,mid,time,content) VALUES(%s, %s, %s, %s)", (rows[i][0], rows[i][1], rows[i][2], tem))

    except mdb.Error,e:
        print "Mysql Error %d: %s" % (e.args[0], e.args[1])
        con.close()

createStatistics()
print 'done'

版权声明:本文为a1b2c3d4123456原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。