• 使用python进行数据转码


    大数据最烦的就是数据质量差,为了把数据导入到sequoiadb中,需要要求文本是UTF-8模式的,使用enca查看文件编码是gb2312,然后是enca转utf-8报错。google了整个地球都不知道原因,尝试使用python进行转码

    # -*- coding: utf-8 -*-
    import codecs
    import sys
    print "文件名:", sys.argv[1]
    filename = sys.argv[1]
    if( filename == None ):
    exit(1)
    file = open(filename)
    writefile = open(filename+"utf8","w+")
    bom = file.read(3)
    if( bom == codecs.BOM_UTF8 ):
    file.seek(3)
    for a in file:
    writefile.write(a.decode("gb2312","ignore").encode("utf-8"))
    file.close()
    writefile.close()
    这里说明两点:
    1:for line in file 是python读取大文件比较快速的方法
    2:上面代码转码时报错:UnicodeDecodeError: ‘gb2312’ codec can’t decode bytes in position 2-3: illegal multibyte sequence
     
    第二个问题:writefile.write变成print没有这个问题,但是一write就有问题,很费解,后来网上找了一个文章说:处理的字符的确是gb2312的,但是其中夹杂的部分特殊字符在gb2312里面找不到相关的映射转成Unicode,可以使用GB18030,他是GB2312的超集,包含很多特殊字符是gb2312没有的,改成gb18030可以了。
     
    但是依旧没有解决为什么print可以的原因。
  • 相关阅读:
    php中的_GET和_POST
    CSS中的特殊符号
    Nginx简介
    php获得时间
    php中定义类
    AcWing 803. 区间合并
    AcWing 826. 单链表
    AcWing 2816. 判断子序列
    AcWing 790. 数的三次方根
    AcWing 802. 区间和
  • 原文地址:https://www.cnblogs.com/gaoxing/p/4918134.html
Copyright © 2020-2023  润新知