【问题标题】:Using csv to write contacts in pythonpython中使用csv写联系人
【发布时间】:2026-01-09 15:35:02
【问题描述】:

我知道我的代码中可能有一个愚蠢的错误,但我无法得到它。 我正在编写接受用户输入并将其写入 csv 文件(实际上是联系人应用程序)的代码。

import csv
fields = ['Name', 'Contact No.']
def store():
    file=open("contacts.csv", 'w')
    g=int(input("How many contacts do you want to save?"))
    a=[]
    for i in range(0,g):
        name=input("Enter Contact Name:")
        number=input("Enter Contact No.:")
        a.append(name)
        a.extend(number)
        i+=1
    writer=csv.writer(file)
    writer.writerow(fields)
    writer.writerow(a)       
    file.close()
store()

所以,问题是当我尝试输入多个联系人时,前一个联系人被删除,只剩下最后一个按顺序输入的联系人。 我认为错误出在列表部分。你能说出我的代码中的错误吗?

【问题讨论】:

    标签: python-3.x list csv


    【解决方案1】:

    First i+=1 在这段代码中什么都不做

    你也使用 list.extend 错误,extend 就像 list.append 但加入两个列表。它只对你有用,因为内部类型是一个字符串,也被认为是一个列表。 见https://docs.python.org/3/library/stdtypes.html?highlight=extend

    再次使用 append...

    真正的问题是 a 只是所有联系人的大列表,我假设您希望每个联系人都有一行。所以我建议你在循环中调用writerow(a) 方法并清除每次迭代。像这样:

    file=open("contacts.csv", 'w')
    g=int(input("How many contacts do you want to save?"))
    
    writer=csv.writer(file)
    writer.writerow(fields)
    
    for i in range(0,g):
        name=input("Enter Contact Name:")
        number=input("Enter Contact No.:")
        a=[]
        a.append(name)
        a.append(number)
        writer.writerow(a)
       
    file.close()
    

    【讨论】: