Python 使用boto3访问作为S3对象读取的csv文件的特定列时出现问题

Python 使用boto3访问作为S3对象读取的csv文件的特定列时出现问题,python,csv,amazon-s3,boto3,Python,Csv,Amazon S3,Boto3,我正在使用boto3从S3读取csv文件,并希望访问该csv的特定列。我使用boto3将csv文件读入S3对象,但我在从中访问特定列时遇到问题: import boto3 s3 = boto3.resource('s3',aws_access_key_id = keyId, aws_secret_access_key = sKeyId) obj = s3.Object(bucketName, srcFileName) filedata = obj.get()["Body"].read()

我正在使用
boto3
S3
读取
csv
文件,并希望访问该
csv
的特定列。我使用
boto3
csv
文件读入
S3
对象,但我在从中访问特定列时遇到问题:

import boto3

s3 = boto3.resource('s3',aws_access_key_id = keyId, aws_secret_access_key = sKeyId)

obj = s3.Object(bucketName, srcFileName)

filedata = obj.get()["Body"].read()
print(filedata.decode('utf8'))

for row in filedata.decode('utf8'):
    print(row[1]) # Get the column at index 1
当我在上面执行此操作时,
打印(filedata.decode('utf8'))
在我的输出控制台上打印以下内容:

51350612,Gary Scott
10100063,Justin Smith
10100162,Annie Smith
10100175,Lisa Shaw
10100461,Ricardo Taylor
10100874,Ricky Boyd
10103593,Hyman Cordero
但是循环的
print(行[1])
内部
行抛出错误,因为
索引器:字符串索引超出范围


如何使用'boto3?

删除此错误并从
S3
访问csv文件中的特定列要正确读取csv,请导入csv python模块并使用其中一个读卡器

文档:

boto3.s3.get().read()将检索整个文件字节对象。您的代码
filedata.decode('utf8')
仅将整个字节对象转换为字符串对象。这里没有解析。这是另一个答案的无耻副本

如果你只有一个简单的CSV文件,一个快速而肮脏的修复程序就可以了

for row in filedata.decode('utf8').splitlines():
    items = row.split(',')
    print(items[0]. items[1])

我知道如何读取csv文件。问题是使用
boto3
包从AmazonS3读取csv文件,然后访问其中的特定列,这会引发错误
for row in filedata.decode('utf8').splitlines():
    items = row.split(',')
    print(items[0]. items[1])