迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中错误 CSV.Error: Line Contains Null Byte

作者:迹忆客 最近更新:2023/07/04 浏览次数:

CSV 文件是包含逗号分隔值的文本文件。 文件中的每一行代表一行数据,每个值之间用逗号分隔。

CSV 文件通常用于存储电子表格或数据库中的数据。 它们可以在文本编辑器或电子表格程序中打开,并可以使用编程语言轻松解析和处理。


CSV 文件格式

CSV 文件是一种以表格格式存储数据的文本文件。 表的每一行称为一条记录,记录中的每个字段称为一列。

CSV 文件通常使用逗号分隔每个字段,但也可以使用其他字符,例如制表符或空格。

CSV 文件通常用于存储数据库或电子表格中的数据。 它们可以在文本编辑器(例如 Microsoft 记事本)或电子表格程序(例如 Microsoft Excel)中打开。


在 Python 中创建 CSV 文件

CSV 代表逗号分隔值,其中文件中的数据以逗号分隔,并以纯文本形式以表格格式存储。 文件中的每一行代表一条记录,列代表 CSV 文件中数据的不同属性。

import csv

meta_data = ['First Name', 'Last Name', 'Course', 'Age']
student_data = ['Zeeshan', "Afridi", "Computer programming", '24']

with open('countries.csv', 'w', encoding='UTF8') as f:
    writer = csv.writer(f)

    # write the header
    writer.writerow(meta_data)

    # write the data
    writer.writerow(student_data)

# closing the file
f.close()

a = open('countries.csv', 'r')
print(a.read())

# closing the file
a.close()

输出:

First Name,Last Name,Course,Age
Zeeshan,Afridi,Computer programming,24

Python 中的 _csv.Error: line contains NULL byte 错误

假设您在尝试读取 CSV 文件时收到 _csv.Error: line contains NULL byte,很可能是因为文件中存在一个或多个 NULL 字节。 要解决此问题,您可以在运行 CSV 读取器时使用 --zero-termerated 选项,该选项会将所有 NULL 字节视为行尾字符。

当您有任何空值时,您将遇到以下错误:

file my.csv, line 1: line contains NULL byte

修复 Python 中的 _csv.Error: line contains NULL byte 错误

您遇到 _csv.Error: line contains NULL byte 通常是因为您尝试读取以错误编码保存的 CSV 文件。 读取文件时必须指定正确的编码才能解决此问题。

例如,如果文件以 UTF-8 编码,您将使用以下代码:

import csv

with open('filename.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

假设您在尝试读取 CSV 文件时遇到 _csv.Error: line contains NULL byte,则文件中可能存在无效字符。 这可能是由多种原因引起的,包括 UTF-8 编码中无效的字符或不可见的字符(例如,不可打印的字符)。

要修复此错误,您必须识别并从文件中删除无效字符。 这可以使用文本编辑器或十六进制编辑器来完成。

删除无效字符后,应该可以毫无问题地读取文件。

这是针对此类错误的另外三种解决方案。

  1. 在内存中转换字节流
  2. 通过用空字符串替换 NULL 字节
  3. 固定线路通过

转换内存中的对象字节流

我们可以通过转换内存中的目标文件字节流来解决这个错误。 下面的代码可以帮助将其转换为内存中的字节流。

content = csv_file.read()
# after conversion into an in-memory byte stream
csv_stream = io.BytesIO(content)

用空字符串替换 NULL 字节

可以通过迭代行并用空字符串替换空字节来解决空字节错误。 用于此目的的代码如下:

# After Iteration through the lines and replacing null bytes with empty string
fixed_lines = (line.replace(b'\x00', b'') for line in csv_stream)

在fixed_lines而不是csv_stream中传递对象文件

解决此错误需要传入固定行而不是 CSV 流。 用于此目的的代码如下:

# Below remains unchanged, just passing in fixed_lines instead of csv_stream
stream = codecs.iterdecode(fixed_lines, 'utf-8-sig', errors='strict')
dict_reader = csv.DictReader(stream, skipinitialspace=True, restkey="INVALID")

总结

CSV 错误行包含空字节是由 CSV 文件中的一行包含空字节引起的。 如果您使用的文本编辑器不支持 Unicode,或者您从另一个不支持 Unicode 的系统传输文件,则可能会发生这种情况。

要修复此错误,您需要在 CSV 文件中找到包含空字节的行并将其删除。 您可以使用支持 Unicode 的文本编辑器或将文件传输到支持 Unicode 的系统来执行此操作。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中错误 AttributeError: Module Urllib Has No Attribute Request

发布时间:2023/07/04 浏览次数:106 分类:Python

Python 将缓存导入,因为您正在使用导入的模块供其自身使用,使其成为对象的一部分。Python 中 AttributeError:module 'urllib' has no attribute 'request' 当您尝试通过导入 URL 库打开 URL 链接时,此错误是

Python 错误 ImportError: No Module Named Requests

发布时间:2023/05/31 浏览次数:136 分类:Python

错误 ImportError: No module named requests 意味着 Python 解释器无法导入 requests 模块。本篇文章展示了修复Python中 ImportError: No module named requests 错误的方法。

修复 Python 错误 SyntaxError: Invalid Token

发布时间:2023/05/30 浏览次数:103 分类:Python

在本文中,我们将了解什么是 SyntaxError: invalid token Python 错误以及如何修复它。 令牌是语句的重要组成部分,组合这些令牌可为 Python 编译器提供有意义的模式。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便