我需要将CSV数据上传到MySQL。为此,我利用了AWS Lambda服务。我正在Lambda函数(使用Python2.7)中从S3存储桶读取CSV文件。我想使用我在Lambda控制台的环境变量中插入的值来验证CSV的标头。但是,在打印数据时,我在每行最后一列的值的末尾得到“ \ r”。
我能够从CSV读取数据,并且这些值也被插入到MySQL DB中。
def validateCSV(event,context):
EXPECTED_HEADERS=os.environ['RM_EXPECTED_HEADERS']
s3 = boto3.client("s3")
file_obj = event["Records"][0]
bucketname = str(file_obj['s3']['bucket']['name'])
filename = str(file_obj['s3']['object']['key'])
fileObj = s3.get_object(Bucket=bucketname, Key=filename)
rows = fileObj["Body"].read().split('\n')
print(rows)//(['Name,Age,PinCode\r', 'Apple,15,411001\r',''])
fList=[]
for line in rows:
fList.append(line.split(','))
print("fList Headers matched: ",fList[0]==EXPECTED_HEADERS)//this is giving me FALSE
我在环境变量--key = RM_EXPECTED_HEADERS中添加了值,并将其值添加为['Name','Age','PinCode']。但是当我打印fList [0]时,我得到了[['Name','Age','PinCode \ r'])。
如何从fList [0]中删除“ / r”?
答案 0 :(得分:0)
您可以从行中手动删除\r
:
rows = [x.strip() for x in fileObj["Body"].read().split('\n'))
或者将它们包含在您的split(...)
中:
rows = [x.strip() for x in fileObj["Body"].read().split('\r\n'))
我对剩余的\r
从未遇到过任何问题-python通常会处理\n
(Linux)或\r\n
(Windows)-如果使用Windows创建文本文件并拆分,则可能会出现问题他们在Unix下-不确定。