列表中的所有项目在保存到文本文件时都会重复 - Python

时间:2016-03-14 10:07:50

标签: python list io

我有一个函数,它接受一个列表,将其转换为字符串,然后将其输出到.txt文件,但是当我检查文本文件时,它会使每个条目加倍。我已经找到了答案,但找不到答案,如果之前有人问过道歉。 我的代码:

workers = ["John","Mark"]

# Prints list of employees to file
def printAllWorkers():
    strList = str(workers).strip('[]')
    with open('EmployeeList.txt','w') as file:
        for item in workers:
            file.write(strList)

因此,列表应该显示' John',' Mark',而是显示' John',' Mark','' ; John',' Mark'

我要么只想输出一次列表(首选),要么取出文本文件并删除任何重复项。

谢谢!

6 个答案:

答案 0 :(得分:0)

实际上,您在每次迭代时都在编写整个列表strList,您可以按如下方式修复它:

workers = ["John","Mark"]

# Prints list of employees to file
def printAllWorkers():
    with open('EmployeeList.txt','w') as file:
        file.write(', '.join(workers))

答案 1 :(得分:0)

您编写两次创建的字符串。不要遍历worker并为每个worker编写整个输出。只做一次:

def printAllWorkers():
    strList = str(workers).strip('[]')
    with open('EmployeeList.txt','w') as file:
        file.write(strList)

文件内容:

'John', 'Mark'

答案 2 :(得分:0)

从for循环中取出write命令,它会显示两次,因为你在一个有2个条目的循环中显示它

答案 3 :(得分:0)

那是因为您在最后一行告诉程序每个项目将列表写入文件一次。用item替换file.write(strlist)中的strlist,它将按预期工作。

要清楚你的最后一行需要是file.write(item)

答案 4 :(得分:0)

只需删除for循环,因为您在工作者列表中迭代了ever元素,2个元素,并且输出 strList 两次。

workers = ["John","Mark"]

# Prints list of employees to file
def printAllWorkers():
    strList = str(workers).strip('[]')
    with open('EmployeeList.txt','w') as file:
        file.write(strList)

答案 5 :(得分:0)

您可以继续使用相同的代码,但将file.write(strList)替换为file.write(item)。您正在迭代,但编写列表而不是迭代值。

要么这样做:

workers = ["John","Mark"]

    def printAllWorkers():
        #strList = str(workers).strip('[]')
        with open('EmployeeList.txt','w') as file:
            for item in workers:
                file.write(item)