Python:将列表写入.csv文件

时间:2016-01-05 22:50:31

标签: python list csv

我正在自学编程,使用Python作为我的首选武器。

我已经学到了一些基础知识,并决定为自己设置挑战,要求用户提供名称列表,将名称添加到列表中,然后最终将名称写入.csv文件。

以下是我的代码。有用。

我的问题是你会采取哪些不同的方式,即如何提高这些代码的可读性和效率。你会不同地处理这种情况,以不同的方式构建它,调用不同的函数吗我很感兴趣,并且非常感谢来自更有经验的程序员的反馈。

特别是,我发现某些部分笨重;例如必须向用户指定数据输入所需的格式。但是,如果我只是简单地请求没有逗号的数据(名称年龄位置),那么当写入.csv时,每条记录最终将作为每个单元格的一条记录(Excel) - 这不是所需的结果。

#Requesting user input. 
guestNames = input("Please enter the names of your guests, one at a time.\n"\
    "Once you have finished entering the information, please type the word \"Done\".\n"\
    "Please enter your names in the following format (Name, Age, Location). ").capitalize()

guestList.append(guestNames)

while guestNames.lower() != "done".lower() :
    guestNames = input("Please enter the name of your " + guestNumber[number] + " guest: ").capitalize()
    guestList.append(guestNames)
    number += 1

#Sorting the list. 
guestList.sort()
guestList.remove("Done")

#Creating .csv file. 
guestFile = open("guestList.csv","w")
guestFile.close()

#Writing to file. 
for entries in guestList :
    guestFile = open("guestList.csv","a")
    guestFile.write(entries)
    guestFile.write("\n")
    guestFile.close()

1 个答案:

答案 0 :(得分:0)

我试着写下你的要求:

  1. 根据结构(无论如何)解析输入字符串并将结果保存到列表中
  2. 将结果格式化为CSV格式字符串
  3. 将字符串写入CSV文件
  4. 首先,我强烈建议您阅读像Google Developer Tutorial这样的Python字符串操作和格式化教程。当您了解基本操作时,请查看official documentation以查看Python中可用的字符串处理方法。

    编写代码的逻辑是正确的,但有两条无意义的行:

    1. while guestNames.lower() != "done".lower()
    2. 没有必要降低“完成”,因为它已经是小写的。

      1. for entries in guestList : guestFile = open("guestList.csv","a")
      2. 在这里打开和关闭每个循环的questList.csv,这是无用且昂贵的。您可以在开头打开文件,然后使用for循环保存所有行,并在结尾处关闭它。

        这是一个使用相同逻辑和不同输入格式的示例:

        print('some notification at the beginning')
        
        while true:
            guestNames = input("Please enter the name of your " + guestNumber[number] + " guest: ").capitalize()
        
            if guestNames == 'Done':
                # Jump out of the loop if user says done
                break
            else:
                # Assume user input 'name age location', replace all space with commas
                guestList.append(guestNames.replace(' ', ','))
                number += 1
        
        guestList.sort()
        
        # the with keyword will close the guestFile at the end
        with open("guestList.csv","w") as guestFile:
            guestFile.write('your headers\n')
            for entries in guestList:
                guestFile.write('%s\n' % entries)
        

        请注意,有许多方法可以满足您的需求,具有不同的逻辑和方法。