【发布时间】:2019-10-03 13:27:31
【问题描述】:
我有一个包含三列和多行的 CSV 文件。所有数据都是字符串。我正在尝试一次读取 CSV 一行并将每一行转换为一个字典,然后我想将其附加到一个列表中,这样我就有了一个字典列表。环境是 AWS Lambda,CSV 来自 S3 存储桶。
我的代码:
csv_object = s3.Object('MyBucket', 'My.csv')
csv_file = csv_object.get()['Body'].read().decode('utf-8')
f = StringIO(csv_file)
reader = csv.reader(f, delimiter=',')
list_of_json = []
mydevice = {}
for row in reader:
mydevice["device"] = row[0]
mydevice["serial"] = row[1]
mydevice["software"] = row[2]
list_of_json.append(mydevice)
软件运行(即不会出错),但它没有产生预期的结果。如果我在 for 循环完成后print(list_of_json),我希望它产生这个;
[{"device":"Dev1", "serial":"Ser1", "software":"software1"},{.....}]
但实际上产生的只是一个空列表......好像 append 语句甚至不存在;
[]
CSV 读取和for row in reader: 部分似乎都工作正常。如果我在 for 循环中执行 print(mydevice),我可以看到它成功通过所有设备,但由于我无法理解的原因,append 语句似乎永远不会将任何内容附加到 list_of_json 列表。
【问题讨论】:
-
您尝试过使用 DictReader 吗?它会做你似乎想做的事情。您还可以添加一个示例输入 CSV,以便我们可以尝试运行您的代码吗?
-
您是否在解释器中运行它,在打印出
mydevice并将下一个附加到列表时循环它?
标签: python list csv dictionary