python - 在python中逐行存储来自url的数据
问题描述
我正在尝试从 url 逐行读取数据并将每一行存储在列表中:我尝试过:
url = request.GET.get('url')
data = []
with closing(requests.get(url, stream=True)) as f:
data = [list(map(int, line.split('\n'))) for line in f]
输入:
1 1 1
2 2 2
3 3 3
预期输出:
data = [[1,1,1],[2,2,2],[3,3,3]
解决方案
由于您没有显示您的数据源或您的输入,因此很难说出您做错了什么。但是,以下是从源读取数据的 csv 文件的示例,它将逐行读取,然后用逗号分隔每一行并将其存储为列表。这一切都是在列表理解中完成的,因此您最终会得到一个列表列表。
注意:这只是 CSV 的一个示例,通常我会使用 csv 模块进行解析。但这应该让您了解如何在每行数据返回并对其进行拆分时对其进行读取。
在您的代码中,您将一次读取每一行,然后您说要按新行拆分。但是不会有新的线路可以分割,因为您一次只能得到一条线路。
import requests
from contextlib import closing
with closing(requests.get('http://samplecsvs.s3.amazonaws.com/SacramentocrimeJanuary2006.csv', stream=True)) as f:
data = [line.decode().split(',') for line in f]
print(data)
输出
[['cdatetime', 'address', 'district', 'beat', 'grid', 'crimedescr', 'ucr_ncic_code', 'latitude', 'longitude\r1/1/06 0:00', '3108 OCCIDENTAL DR', '3', '3C ', '111'], ['5', '10851(A)VC TAKE VEH W/O OWNER', '2404', '38.55042047', '-121.3914158\r1/1/06 0:00', '2082 EXPEDITION WAY', '5', '5A ', '1512', '459 PC BURGLARY'], [' RESIDENCE', '2204', '38.47350069', '-121.4901858\r1/1/06 0:00', '4 PALEN CT', '2', '2A ', '212', '10851(A)VC TAKE VEH W/O OWNER', '2404', '38.65784584', ''],..........
推荐阅读
- python - Python 通过评估条件进行排序,然后按单独的列排序
- php - 在浏览器中找不到驱动程序,但从容器和本地的修补程序中我可以看到 DB
- angular - 业力错误:失败:this.alertController.getAlerts 不是函数
- android - Android 广播接收器未启动 (Kotlin)
- java - 堆栈跟踪和错误中的密码清理
- list - 使用计数器即时更改列表的名称
- bash - 如何使用 bash 从字符串中提取所有 IP 地址
- css - 创建一个以弧形/上角滑动项目的滑块
- java - getParams() 与 JsonArrayRequest
- javascript - 为什么JS中的字符串替换不能替换所有字符