【问题标题】:Need clarification of extracting CSV file using python需要澄清使用 python 提取 CSV 文件
【发布时间】:2018-01-16 02:10:30
【问题描述】:

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

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

当我第一次尝试使用 csv 中的基本代码时,我得到了一个错误 _csv.Error: line contains 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)

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

【问题讨论】:

  • @pnuts 是的,你是对的!我是多么的无知!它与编码有关。

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


【解决方案1】:

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

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

    for row in readCSV:
        print(row)

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2012-07-18
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多