美文网首页
Python 读写gbk格式的csv文件,并写入mysql

Python 读写gbk格式的csv文件,并写入mysql

作者: leoatchina | 来源:发表于2016-06-11 22:41 被阅读3586次

这是最近碰到的问题,总结一下,希望有大牛帮助指正

写入到CSV文件,设置文本的格式为gbk格式

  • 在文件开头,设置成gbk格式
import os,sys,re,csv
reload(sys)
sys.setdefaultencoding('gbk')
  • 写入csv文件时
csvFile=open(dir+'test.csv','wb')
csvFile.write('\xEF\xBB\xBF')  #左边这个很关键,否则会乱码

读取CSV文件,设置文本的格式为utf8格式

  • 在文件开头,设置成utf8格式
reload(sys)
sys.setdefaultencoding('utf-8')
  • 读取csv文件时,要设置编码格式,进行数据库读写时非常重要
with open('./drugDatabase.csv','rb') as c:
                csvfile=csv.reader(c,delimiter=",",quotechar='"')
                for row in csvfile:
                      test=row[0].decode("gbk").encode("utf-8")

一些解释

  • py文件默认是ASCII编码,需要在代码文件的第一行或第二行添加编码指示
    # coding=utf-8
  • 虽然可能显示出来一样 ,unicode和str是两种格式
  • 用 u'汉字' 构造出来的是unicode类型,不用的话构造出来是str类型。
    str的编码是与系统环境相关的,一般就是sys.getfilesystemencoding()得到的值
  • unicode和str的互相转换
  • unicode是一个内置函数,第二个参数指示源字符串的编码格式。
  • decode是任何字符串的方法,将字符串转换成unicode格式,参数为源字符串的编码格式。 encode也是任何字符串具有的方法,将字符串转换成指定的格式。
    • 所以从unicode转str,要用encode方法
    • 从str转unicode,所以要用decode方法
  • 例子
u=u'unicode编码文字'
g=u.encode('gbk') #转换为gbk格式
print g #此时为乱码,因为当前环境为utf-8,gbk编码文字为乱码
str=g.decode('gbk').encode('utf-8') #以gbk编码格式读取并转换为utf-8格式输出
print str #正常显示中文
g.decode('gbk','ignore').encode('utf-8′) #这个是安全的方法,以gbk编码读取(当然是读取gbk编码格式的文字了)并忽略错误的编码

相关文章

网友评论

      本文标题:Python 读写gbk格式的csv文件,并写入mysql

      本文链接:https://www.haomeiwen.com/subject/yaledttx.html