大数据最烦的就是数据质量差,为了把数据导入到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可以的原因。

使用python进行数据转码的更多相关文章

  1. Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试

    摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就 ...

  2. 有关python下二维码识别用法及识别率对比分析

    最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...

  3. 《零起点,python大数据与量化交易》

    <零起点,python大数据与量化交易>,这应该是国内第一部,关于python量化交易的书籍. 有出版社约稿,写本量化交易与大数据的书籍,因为好几年没写书了,再加上近期"前海智库 ...

  4. 小学生都能学会的python(小数据池)

    小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...

  5. 学习推荐《零起点Python大数据与量化交易》中文PDF+源代码

    学习量化交易推荐学习国内关于Python大数据与量化交易的原创图书<零起点Python大数据与量化交易>. 配合zwPython开发平台和zwQuant开源量化软件学习,是一套完整的大数据 ...

  6. 使用 Python 生成二维码

    在“一带一路”国际合作高峰论坛举行期间, 20 国青年投票选出中国的“新四大发明”:高铁.扫码支付.共享单车和网购.其中扫码支付指手机通过扫描二维码跳转到支付页面,再进行付款.这种新的支付方式,造就二 ...

  7. 零起点Python大数据与量化交易

    零起点Python大数据与量化交易 第1章 从故事开始学量化 1 1.1 亿万富翁的“神奇公式” 2 1.1.1 案例1-1:亿万富翁的“神奇公式” 2 1.1.2 案例分析:Python图表 5 1 ...

  8. python的数据缓存

    Python的数据缓存 python 的内置数据类型,数值型,字符串,列表,字典等都会有自己的对象缓存池, 这样做的好处是,避免了频繁的申请内存,释放内存,这样会极大的降低应用程序的运行速度,还会造成 ...

  9. python和数据科学(Anaconda)

    Python拥有着极其丰富且稳定的数据科学工具环境.遗憾的是,对不了解的人来说这个环境犹如丛林一般(cue snake joke).在这篇文章中,我会一步一步指导你怎么进入这个PyData丛林. 你可 ...

随机推荐

  1. 自动化框架httpClient实例

    package com.auto.test.util; import java.net.SocketException;import java.net.SocketTimeoutException;i ...

  2. mapreduce-实现多表关联

    //map package hadoop3; import java.io.IOException; import org.apache.hadoop.io.LongWritable;import o ...

  3. JSONP原理及实现跨域方式

    今天做页面时,后台给了个接口:https://a.a.com/a/a.json,我页面的上线地址是:http://b.b.com.显而易见,因为浏览器同源策略的限制,通过ajax无法无法取得json的 ...

  4. 在winform下实现左右布局多窗口界面的方法(一)

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,通过本文给大家介绍在winform下实现左右布局多窗口 ...

  5. 学习动态性能表(13)--v$open_cursor

    学习动态性能表 第13篇--V$OPEN_CURSOR  2007.6.8 本视图列出session打开的所有cursors,很多时候都将被用到,比如:你可以通过它查看各个session打开的curs ...

  6. 常用Kerberos指令

    1. 以超管身份进入kadminkadmin.local addprinc -randkey root/master1@JENKIN.COM   //生成随机key的principal addprin ...

  7. BZOJ1116:[POI2008]CLO

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php? ...

  8. laravel config文件的使用

    好多东西 由于许多地方都要使用与将来可能发生更改 我们需要把它提取出来 作为配置文件来使用 这样将来要修改的时候 只需要修改一处即可 学习源头: https://blog.csdn.net/linyu ...

  9. Hibernate基础(一)

    Hibernate是ORM开源组件 源码:http://sourceforge.net/projects/hibernate/ 1.Hibernate的配置文件. 默认配置文件: hibernate. ...

  10. Day3-Python基础3---函数介绍

    一.函数基本语法及特性 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做sub ...