在CSV文件中跳过标题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CSV文件中跳过标题相关的知识,希望对你有一定的参考价值。
我正在使用lambda函数从csv文件中添加数据,数据被添加了,但是在dynamodb中我的表中有一个错误,我看到我的表头也有一行,这是我的代码。
import boto3
s3=boto3.client("s3")
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('maysales')
def lambda_handler(event, context):
bucketna=event['Records'][0]['s3']['bucket']['name']
s3_name=event['Records'][0]['s3']['object']['key']
response=s3.get_object(Bucket=bucketn,Key=s3_name)
data=response['Body'].read().decode("utf-8")
salesnbs=data.split("
")
for ko in salesnbs:
kos=ko.split(",")
table.put_item(
Item = {
"Date": kos[0],
"name": kos[1],
"fam": kos[2],
"locati": kos[3],
"adress": kos[4],
"country": kos[5],
"city": kos[6]
})
我的表已经包含了头文件。
答案
大多数CSV文件的第一行包含了标题标签,如果你不想把这行添加到你的dynamodb表中,你需要在开始插入之前跳过第一行,即
row = 0
for ko in salesnbs:
if row == 0:
continue # don't process this line
row = row + 1
kos=ko.split(",")
table.put_item(
Item = {
"Date": kos[0],
"name": kos[1],
"fam": kos[2],
"locati": kos[3],
"adress": kos[4],
"country": kos[5],
"city": kos[6]
})
(语法可能不是100%正确,但这是我的想法)
另一答案
从描述中看不太清楚是什么问题,但我建议使用Python的内置模块 csv 来处理CSV数据。这样你就不需要担心标题和将文件分割成列,因为模块提供了相关的工具。
import csv
...
# Here you can also specify delimiter if need be
reader = csv.DictReader(response['Body'])
for row in reader:
table.put_item(
Item = {
"Date": row["Date"],
"name": row["name"],
"fam": row["fam"],
...
})
模块使用文件的第一行作为列名。
另一答案
使用boto3客户端代替resource.Install。dynamodb-json
from dynamodb_json import json_util as dynamo_json
import json
import boto3
s3=boto3.client("s3")
dynamodb = boto3.client('dynamodb')
def lambda_handler(event, context):
bucketna=event['Records'][0]['s3']['bucket']['name']
s3_name=event['Records'][0]['s3']['object']['key']
response=s3.get_object(Bucket=bucketn,Key=s3_name)
data=response['Body'].read().decode("utf-8")
salesnbs=data.split("
")
for ko in salesnbs:
kos=ko.split(",")
data = {
"Date": kos[0],
"name": kos[1],
"fam": kos[2],
"locati": kos[3],
"adress": kos[4],
"country": kos[5],
"city": kos[6]
}
client.put_item(TableName='maysales',Item=json.loads(dynamo_json.dumps(data)))
以上是关于在CSV文件中跳过标题的主要内容,如果未能解决你的问题,请参考以下文章
在 MS Access 中跳过 CSV 文件的前三行(使用 DoCmd?)