python - 将 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')
只是想问一下我是否做对了,是否有任何副作用或如何使它变得更好。感谢您的好评
解决方案
这是一种方式,但可能您必须为新的名称列表创建标签以避免不必要的循环。如果您正在分析数据,我建议您使用Pandas。Pandas 在这方面更加动态和快速。
推荐阅读
- excel - 在一个范围内输入的文本会导致另一个范围被删除
- karate - 如何将全局变量传递给可重用的要素类路径?
- c++ - 通过宏内联和包含源之间的区别
- python - Tensorflow Keras model.summary() 在层上显示 0 个可训练参数
- docker - Dockerfile 找不到可执行脚本(没有这样的文件或目录)
- python - 停留在使用列表和函数并迭代列表的问题上
- firebase - Flutter Firestore:如何更新嵌套列表?
- javascript - 我尝试javascript一个游戏simon,如果5级游戏完成了怎么办
- mongodb - oplog可以检测mongoDB中的数据视图变化吗
- r - 随机重新组合 r 中的数据(包“LearnBayes”和“caroline”中的“重新组合”不起作用)