需要澄清使用python提取CSV文件

时间:2018-01-16 02:10:30

标签: python excel python-3.x csv codec

我有一个简单的csv文件名log.csv,它显示从硬件设备获取的时间记录。使用excel和Notepad ++打开时如下所示。

Opened in Excel

Opened in Notepad++

第一个问题是为什么在Notepad ++中以及在python中进行提取时会出现额外的零。

当我第一次尝试使用csv的基本代码时,我收到了_csv.Error的错误:line包含NULL byte

import csv
with open('log.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter='\t')

    for row in readCSV:
        print(row)

我也尝试将分隔符更改为' '但没有运气。以后的一些谷歌搜索,找到了一个解决方法,它是关于某种编解码器。

import csv
import codecs

csvReader = csv.reader(codecs.open('log.csv', 'rU', ,utf-16'))

for row in csvReader:
    print (row)

这可以让我打印出一些数据,但有没有解决方法,或者我只需要单独格式化它?

Using Codecs

2 个答案:

答案 0 :(得分:0)

幸运的是,我找到了一种方法。方法是在访问文件之前将文件从utf-16转换为utf-8,并且与代码配合良好

public Dictionary<int, Class1<Class2>> someDictionary;

public T DoThings<T, U>(int id) where T : Class1<U>, new() where U : Class2, new()
{
    T something = null;
    if (!someDictionary.ContainsKey(id))
    {
        something = new T();
        someDictionary.Add(id, something);
    }
    return something;
}

出现这些零的原因是由于编码。

答案 1 :(得分:0)

Excel可能已应用格式设置以不同方式显示您的数据。 Notepad ++和Python看到的是确切的值。您的文件似乎以制表符分隔,您仍应使用delimiter='\t'作为开头。尝试将其添加到reader()功能:

import csv
import codecs

csvReader = csv.reader(codecs.open('log.csv', 'rU', ,utf-16'), delimiter="\t")