【问题标题】:line contains NULL byte error in python csv reader行在 python csv 阅读器中包含 NULL 字节错误
【发布时间】:2014-11-20 22:59:05
【问题描述】:

我正在尝试读取 csv 文件的每一行并收到“行包含 NULL 字节”错误。

reader = csv.reader(open(mycsv, 'rU'))
for line in reader:
     print(line)


Traceback (most recent call last):
  File "<stdin>", line 1, in <module
_csv.Error: line contains NULL byte

使用下面我发现我有空字节。

if '\0' in open(mycsv).read():
     print("have null byte")

解决此问题的最佳方法是什么?在所有行上替换 '\0' 吗?我每天需要处理这种文件,并且有大约 400,000 行 (1Gb) 的数据。我认为更换会大大减慢速度。

【问题讨论】:

    标签: python csv null


    【解决方案1】:

    试试这个!

    import csv 
    
    def mycsv_reader(csv_reader): 
      while True: 
        try: 
          yield next(csv_reader) 
        except csv.Error: 
          # error handling what you want.
          pass
        continue 
      return
    
    if __name__ == '__main__': 
        reader = mycsv_reader(csv.reader(open(mycsv, 'rU')))
        for line in reader:
            print(line)
    

    【讨论】:

    • 这行得通,让我通过文件,我只是想知道为什么我会得到这些空字节。是否可以使用它们代替逗号作为分隔符? f.count('\x00') 返回 1926 个。
    猜你喜欢
    • 2011-12-15
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多