首页 > 解决方案 > 将 csv 读入 sql 数据库时,我需要将名称列拆分为名字、中间名(如果可用)和姓氏列

问题描述

我是编程新手,我有一个 csv 文件,我想读入一个 sql 数据库,但是在读取 csv 文件时,我需要将 name 列拆分为 first_name、middle_name 和 last_name。csv 文件内容如下所示:

name, location, birth_year
Jane Tolu Omo, Rayfield, 1979
Myles Jim Jones, London, 1980

所以我在下面写了这个:

# Creating a dictionary to hold the different names
nameDict = {name: None for name in names}

# Creating another dictionary to full students (csv) data
studentsDict = {}

# open csv file given by command line argument, read it one line at a time
with open('characters.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        nameDict = row['name'].split()
        studentDict = (nameDict, row['house'], row['birth'])
        print(studentDict)

我在下面得到了这个:

(['Harry', 'James', 'Potter'], 'Gryffindor', '1980')
(['Hermione', 'Jean', 'Granger'], 'Gryffindor', '1979')
(['Isobel', 'MacDougal'], 'Ravenclaw', '1980')
(['Justin', 'Finch-Fletchley'], 'Hufflepuff', '1979')

只是想问一下我是否做对了,是否有任何副作用或如何使它变得更好。感谢您的好评

标签: pythondatabasesqlitecsvdictionary

解决方案


这是一种方式,但可能您必须为新的名称列表创建标签以避免不必要的循环。如果您正在分析数据,我建议您使用Pandas。Pandas 在这方面更加动态和快速。


推荐阅读