Python `_错误:行包含下载的csv中的NUL`
我从url下载了一个csv文件,并使用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
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(我不知道现在是否仍然如此)。