我有一个简单的csv文件名log.csv,它显示从硬件设备获取的时间记录。使用excel和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)
这可以让我打印出一些数据,但有没有解决方法,或者我只需要单独格式化它?
答案 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")