我想做的是循环浏览csv文件,然后将数据插入到SQL数据库中。目前,我正在工作,除了它仅在第2列中存储值之一而不是所有值。这是我的.csv文件的示例:
chad,tall
mike,short
billy,skinny
billy,bald
billy,tall
sarah,tall
sarah,blonde
george,tall
george,bald
steve, short
我想做的是,遍历每一行,追加第2列,如果column1已经存在,则包括其他值。这是我当前的for循环:
# Iterate through the CSV reader, inserting values into the database
for row in creader:
to_db = [unicode(row[1], "utf8"), unicode(row[0], "utf8")]
cursor.execute("UPDATE 'people' SET 'description'= ? WHERE name= ?", to_db)
除每个键只存储一个值外,此方法有效。例如,数据库如下所示:
chad,tall
mike,short
billy,tall
sarah,blonde
george,bald
steve, short
我希望拥有的是:
chad,tall
mike,short
billy,skinny,bald,tall
sarah,tall,blonde
george,tall,bald
steve, short
这可能吗?
最佳答案
据我了解,第一列是您的姓名,第二列是说明,其中可能包含逗号。如果是这样,那么:
val_dict = {}
for row in creader:
try:
value = val_dict[row[0]]
value += row[1] + ","
except KeyError:
value = row[1] + ","
val_dict[row[0]] = value
for row in val_dict.items():
to_db = [unicode(row[1][:-1], "utf8"), unicode(row[0], "utf8")]
cursor.execute("UPDATE 'people' SET 'description'= ? WHERE name= ?", to_db)
关于python - 遍历具有两列且第1列中有重复条目的.csv文件的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34900819/