从CSV读取数据时如何忽略单元格中的逗号 - Python

时间:2018-03-28 23:22:12

标签: python amazon-web-services csv amazon-dynamodb boto

我正在尝试从CSV文件中读取数据并将其加载到DynamoDB表中。问题是描述是用句子写的并且有逗号。如何使用逗号分隔符读取列,但忽略单元格中的逗号?

目前,我正在使用此代码读取CSV文件并写入数据库:

def import_csv_to_dynamodb(table_name, csv_file_name, col_names, column_types):
'''
Import a CSV file to a DynamoDB table
'''
dynamodb_conn = boto.connect_dynamodb(aws_access_key_id=MY_ACCESS_KEY_ID,
                                      aws_secret_access_key=MY_SECRET_ACCESS_KEY)
dynamodb_table = dynamodb_conn.get_table(table_name)
BATCH_COUNT = 2  # 25 is the maximum batch size for Amazon DynamoDB

items = []

count = 0
csv_file = open(csv_file_name, 'r', encoding="utf-8-sig")
for cur_line in csv_file:
    count += 1
    cur_line = cur_line.strip().split(',')

    row = {}
    for col_number, col_name in enumerate(col_names):
        row[col_name] = column_types[col_number](cur_line[col_number])

    item = dynamodb_table.new_item(
        attrs=row
    )
    items.append(item)

    if count % BATCH_COUNT == 0:
        print
        'batch write start ... ',
        do_batch_write(items, table_name, dynamodb_table, dynamodb_conn)
        items = []
        print
        'batch done! (row number: ' + str(count) + ')'

# flush remaining items, if any
if len(items) > 0:
    do_batch_write(items, table_name, dynamodb_table, dynamodb_conn)

csv_file.close()

1 个答案:

答案 0 :(得分:1)

Python内置的csv库非常好。文档真的不需要额外的解释:

https://docs.python.org/3/library/csv.html