Python `_错误:行包含下载的csv中的NUL`

Python `_错误:行包含下载的csv中的NUL`,python,csv,python-requests,character-encoding,Python,Csv,Python Requests,Character Encoding,我从url下载了一个csv文件,并使用csv.reader读取其内容。但是,当我尝试迭代\u csv.reader对象时,我得到了\u csv.Error:行包含NUL 我必须提到,如果我手动将粘贴(ctrl+a、ctrl+c和ctrl+v)csv的内容手动复制到不同的csv,则代码可以工作。 这是到目前为止的代码 import csv import requests url='https://sedo.com/fileadmin/documents/resources/expiring_do

我从url下载了一个csv文件,并使用
csv.reader
读取其内容。但是,当我尝试迭代
\u csv.reader
对象时,我得到了
\u csv.Error:行包含NUL

我必须提到,如果我手动将粘贴(
ctrl+a、ctrl+c
ctrl+v
)csv的内容手动复制到不同的csv,则代码可以工作。

这是到目前为止的代码

import csv
import requests

url='https://sedo.com/fileadmin/documents/resources/expiring_domain_auctions.csv'

response=requests.get(url)

with open('downloaded_csv.csv','wb') as out_file:
    out_file.write(response.content) # file is written properly in disk, can open with editor

with open('downloaded_csv.csv',newline='') as in_file:
    csv_contents=csv.reader(in_file,delimiter=';')
    print((csv_contents))
    for row in csv_contents: # _csv.Error: line contains NUL
        print(row)

有人能告诉我如何在python程序中读取此文件的内容吗?

该文件编码为UTF-16,因此读取文件时必须指定此编码

>>> # Check the first 100 characters...
>>> r = requests.get(url)
>>> r.content.decode('utf-16')[:100]
'sep=;\n"Domain Name";"Start Time";"End Time";"Reserve Price";"Domain is IDN";"Domain has hyphen";"Dom'
根据您的平台,您需要按以下方式打开文件:

with open('downloaded_csv.csv', newline='', encoding=encoding) as in_file:
其中编码的值是
utf-16、utf-16-le、utf-16-be中的一个


请注意,您可能需要删除或跳过开头的
“sep=;”
行。

对于标准英文字母表,UTF-16编码为
一个字节和一个空字节
,因此,如果应用程序抱怨文本中存在空字节,通常需要检查文本字节是否可以解码为UTF-16。Windows也曾在支持unicode的系统中使用UTF-16(我不知道现在是否仍然如此)。