Python 3.x 如何从dropbox中读取csv文件作为字典(从csv.DictReader()读取)?

Python 3.x 如何从dropbox中读取csv文件作为字典(从csv.DictReader()读取)?,python-3.x,csv,dictionary,dropbox-api,Python 3.x,Csv,Dictionary,Dropbox Api,我正在尝试使用从dropbox读取csv文件 md,res=dbx.files\u下载(路径) 如本节所建议的 这是我试图阅读的csv: 从res.content,我从形状难看的csv文件中获取数据。 是否有任何方法可以读取形状更为逼真的数据,如使用: import csv with open(file) as csvfile: reader = csv.DictReader(csvfile) for row in reader: print(row['nam

我正在尝试使用从dropbox读取csv文件

md,res=dbx.files\u下载(路径)

如本节所建议的
这是我试图阅读的csv:
res.content
,我从形状难看的csv文件中获取数据。
是否有任何方法可以读取形状更为逼真的数据,如使用:

import csv
with open(file) as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['name'])

我想将csv文件作为字典来阅读,但我得到的只是如下数据:

我通过将
res.content
转换为iterable obj找到了这个解决方案:

import csv
import dropbox

path = '' # file path which is needed to be read
dbx = dropbox.Dropbox('YOUR_ACCESS_TOKEN')
md, res = dbx.files_download(path)
data = res.content # data in ugly shape
# Now data is needed to be decoded from bytes to unicode and then str.split()
data = data.decode('utf-8')
data = data.split('\n')
# Now data is an iterable object, so csv.DictReader can be used
reader = csv.DictReader(data)
# Loop to get data using key value from reader dict
for row in reader:
    row['nameen']    # 'nameen' is the key value in my case

我通过将
res.content
转换为iterable obj找到了这个解决方案:

import csv
import dropbox

path = '' # file path which is needed to be read
dbx = dropbox.Dropbox('YOUR_ACCESS_TOKEN')
md, res = dbx.files_download(path)
data = res.content # data in ugly shape
# Now data is needed to be decoded from bytes to unicode and then str.split()
data = data.decode('utf-8')
data = data.split('\n')
# Now data is an iterable object, so csv.DictReader can be used
reader = csv.DictReader(data)
# Loop to get data using key value from reader dict
for row in reader:
    row['nameen']    # 'nameen' is the key value in my case

文档中说“csvfile可以是任何支持迭代器协议的对象”,所以将dropbox内容转换成它支持的内容应该很容易?当你说“我得到的只是原始数据”时,你的意思是从哪里来的?我不应该用原始数据这个词。当我试图用csv.DictReader读取“res.content”时,出现了一个导入错误,也是“FileNotFoundError”,并将数据打印为res.content。@Rup我编辑了问题并添加了屏幕截图。哦-你不想
open()
ing res.content,因为磁盘上没有文件。(或者,如果您只需要快速修复,您可以将其写入文件并打开。)但最好的方法是将其转换为一种格式,您可以将其传递到
csv.DictReader
,而无需先尝试
open()
。如果它是一个字符串,那么这可能像用换行符拆分一样简单,但我不确定(它是什么或如何处理它)。谢谢您的帮助。这让我找到了解决方案。文档说“csvfile可以是任何支持迭代器协议的对象”,所以应该很容易将dropbox内容转换为它支持的内容?当你说“我得到的只是原始数据”时,你的意思是从哪里来的?我不应该用原始数据这个词。当我试图用csv.DictReader读取“res.content”时,出现了一个导入错误,也是“FileNotFoundError”,并将数据打印为res.content。@Rup我编辑了问题并添加了屏幕截图。哦-你不想
open()
ing res.content,因为磁盘上没有文件。(或者,如果您只需要快速修复,您可以将其写入文件并打开。)但最好的方法是将其转换为一种格式,您可以将其传递到
csv.DictReader
,而无需先尝试
open()
。如果它是一个字符串,那么这可能像用换行符拆分一样简单,但我不确定(它是什么或如何处理它)。谢谢您的帮助。这让我找到了解决办法。