简体   繁体   English

如何在 AWS lambda python 中读取 object 并转换为 json

[英]How to read object and convert to json in AWS lambda python

My csv is below.我的 csv 在下面。 I need to convert into json using AWS lambda using python我需要使用 AWS lambda 使用 python 转换为 json

value,Name,flag
ABC,ab@gmail.com|cd@gmail.com,Y
ABC,de@gmail.com,Y
CDE,ab@gmail.com,N
CDE,cd@gmail.com,N

Code is below代码如下

import boto3
import csv
s3_read = boto3.client('s3')
obj = s3_read.get_object(Bucket=bucket, Key=key)
CSVcontent = obj['Body'].read().decode('utf-8').split('\n')
CSVfile = csv.reader(CSVcontent)
print('CSVfile', list(CSVfile))

My current out is我目前的输出是

[['value', 'Name', 'flag'], ['ABC', 'ab@gmail.com|cd@gmail.com', 'Y'], ['ABC', 'de@gmail.com', 'Y'], ['CDE', 'ab@gmail.com', 'N'], ['CDE', 'cd@gmail.com', 'N']]
  • I need to merge all the same keys and same flag我需要合并所有相同的键和相同的标志
  • I need to change all the |我需要改变所有| to different string到不同的字符串

Expected out is below预期结果如下

[{'value': 'ABC', 'name': ['ab@gmail.com','cd@gmail.com','de@gmail.com'], 'flag': 'Y'},
 {'value': 'CDE', 'name': ['ab@gmail.com','cd@gmail.com'], 'flag': 'N'}]

Starting with your current data ( list(CSVfile) ) and creating a list of dicts从您当前的数据( list(CSVfile) )开始并创建一个字典列表

current = [['value', 'Name', 'flag'], ['ABC', 'ab@gmail.com|cd@gmail.com', 'Y'], ['ABC', 'de@gmail.com', 'Y'],
           ['CDE', 'ab@gmail.com', 'N'], ['CDE', 'cd@gmail.com', 'N']]


def handle(k, v):
    if k == 'Name':
        return v.split('|')
    else:
        return v


data = []
for entry in current[1:]:
    data.append({k: handle(k,entry[idx]) for idx, k in enumerate(current[0])})
print(data)

output output

[{'value': 'ABC', 'Name': ['ab@gmail.com', 'cd@gmail.com'], 'flag': 'Y'}, {'value': 'ABC', 'Name': ['de@gmail.com'], 'flag': 'Y'}, {'value': 'CDE', 'Name': ['ab@gmail.com'], 'flag': 'N'}, {'value': 'CDE', 'Name': ['cd@gmail.com'], 'flag': 'N'}]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM