我想做的是循环浏览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/

10-15 21:19