python中csv文件的读取问题

摘要:
使用csv。读取器读取文件对象,读取器=csv。reader(打开(文件路径,打印“Rowreadsuccessfully!%s”%(文件名,reader.line_num,'rb')。read(200))#dump1st200bytesoffiledata=打开(文件路径,fi=打开('my.csv',

在python读取csv格式的文件时,使用csv.reader读取文件对象,出现了line contains NULL byte的错误,如下:

reader = csv.reader(open(filepath, "rU"))
try:
    for row in reader:
        print 'Row read successfully!', row
except csv.Error, e:
    sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))
file my.csv, line 1: line contains NULL byte
查阅网上,原因在于csv文件中存在空字符,可用以下代码查证:
print repr(open(filepath, 'rb').read(200)) # dump 1st 200 bytes of file
data = open(filepath, 'rb').read()
print data.find('x00')
print data.count('x00')
一般来说,运行后确实打印出空字符的存在。此时可用文本编辑器打开该csv文件,确保csv文件中不存在空字符,
网上给出的解决代码如下,将空字符替换成空字符串:
fi = open('my.csv', 'rb')
data = fi.read()
fi.close()
fo = open('mynew.csv', 'wb')
fo.write(data.replace('x00', ''))
fo.close()
还有一法,以utf-16的编码格式打开文件,据说可以解决此问题,代码如下:
f=codecs.open(location,"rb","utf-16")
csvread=csv.reader(f,delimiter='	')
csvread.next()
for row in csvread:
    print row
如果实在解决不了这个问题,用普通的open("mycsv.csv","rU")方法,读取整个文件,然后逐行使用split(",")方法把字符提取出来也是可以的。条条大路通罗马,怎么走,端看个人选择了。
 

免责声明:文章转载自《python中csv文件的读取问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Video.js(转)使用Ubuntu下的PyCharm进行ROS开发下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

简单应用复旦FNLP自然语言处理工具(一)

FNLP是一个基于机器学习的中文自然语言文本处理的开发工具包,FNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。                                                      ----------百度百科 信息检索 文本分类 新闻聚类 中文处理: 中文分词 词性标注...

java随机生成字符串和校验

首先给大家推荐一个可以在线运行JAVA程序的网站:https://tool.lu/coderunner/ 然后可以运行下我的程序代码,我的代码运行效果如下图:   接下来定义字符串 1 String a = "0123456789"; // 数字 2 String b = "abcdefghijklmnopqrstu...

用layui实现下拉框select多选,取值

首先需要的js及css,可以直接在layui官网上下载:https://www.layui.com/ 相关引用: <script src="http://t.zoukankan.com/~/layui-v2.4.5/layui/layui.js"></script><script src="http://t.zoukanka...

第148天:js+rem动态计算font-size的大小,适配各种手机设备

需求: 在不同的移动终端设备中实现,UI设计稿的等比例适配。 方案: 布局排版都用rem做单位,然后不同宽度的屏,js动态计算根节点的font-size。 假设设计稿是宽750px来做的,书写css方便计算考虑,根节点的font-size假定为100px,得出设备宽为7.5rem。设计稿中标注的任何px数值都可以换算成px/100的rem值。 就是说,每一...

11-linux基础八-正则表达式

1. 正则表达式的概念及特点:   正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式(Regular Expression)。...

ANSI、ASCII、Unicode和UTF-8编码

来自:http://blog.163.com/yang_jianli/blog/static/161990006201371451851274/ -------------------------------------------------------------------------------------------- 1、ANSI编码     ...