Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python csv.错误:您是否以文本模式打开文件?_Python_Csv_Urllib - Fatal编程技术网

Python csv.错误:您是否以文本模式打开文件?

Python csv.错误:您是否以文本模式打开文件?,python,csv,urllib,Python,Csv,Urllib,python文件包含以下代码 import csv import urllib.request url = "https://gist.githubusercontent.com/aparrish/cb1672e98057ea2ab7a1/raw/13166792e0e8436221ef85d2a655f1965c400f75/lebron_james.csv" stats = list(csv.reader(urllib.request.urlopen(url))) 在python中运行上

python文件包含以下代码

import csv 
import urllib.request
url = "https://gist.githubusercontent.com/aparrish/cb1672e98057ea2ab7a1/raw/13166792e0e8436221ef85d2a655f1965c400f75/lebron_james.csv"
stats = list(csv.reader(urllib.request.urlopen(url)))
在python中运行上述代码时,会出现以下异常:

错误
回溯(最近一次呼叫最后一次) 在() 1 url=“” ---->2 stats=list(csv.reader(urllib.request.urlopen(url)))

错误:迭代器应该返回字符串,而不是字节(是否以文本模式打开文件?)


如何解决此问题?

我真的不知道这些数据是什么,但如果您有兴趣使用
分隔这些数据,您可以尝试以下方法:

stats = list(csv.reader(urllib.request.urlopen(url).read().decode()))
import csv 
import requests

url = "https://gist.githubusercontent.com/aparrish/cb1672e98057ea2ab7a1/raw/13166792e0e8436221ef85d2a655f1965c400f75/lebron_james.csv"

text = requests.get(url).text
lines = text.splitlines()
stats = csv.reader(lines)

for row in stats:
    print(row)

# ['Rk', 'G', 'Date', 'Age', 'Tm', ...]
# ['1', '1', '2013-10-29', '28-303', 'MIA',... ]
1.它读取响应数据

2.从字节解码为字符串

3.CSV阅读器

4.将CSV对象强制转换为列表


如果您需要不同的数据,请告诉我,以便我可以编辑我的答案。
祝您好运。

您应该阅读
urlib.request.urlopen
的响应

stats = list(csv.reader(urllib.request.urlopen(url).read().decode("UTF-8")))

请尝试以下代码

import csv
import io
import urllib.request
csv_response = urllib.request.urlopen(url)
lst = list(csv.reader(io.TextIOWrapper(csv_response)))

urllib
的文档建议使用该模块

你必须注意两件事:

  • 您必须对从internet接收的数据(字节)进行解码,才能获得文本。对于
    请求
    ,使用
    文本
    进行解码
  • csvreader
    需要的是行列表,而不是文本块。在这里,我们使用
    拆分行将其拆分
所以,你可以这样做:

stats = list(csv.reader(urllib.request.urlopen(url).read().decode()))
import csv 
import requests

url = "https://gist.githubusercontent.com/aparrish/cb1672e98057ea2ab7a1/raw/13166792e0e8436221ef85d2a655f1965c400f75/lebron_james.csv"

text = requests.get(url).text
lines = text.splitlines()
stats = csv.reader(lines)

for row in stats:
    print(row)

# ['Rk', 'G', 'Date', 'Age', 'Tm', ...]
# ['1', '1', '2013-10-29', '28-303', 'MIA',... ]

这是勒布朗·詹姆斯在2013-2014赛季前五场比赛的统计数据。数据的来源:@SzuyuChen那么你想怎么做呢?