在新行上将列表打印为CSV或txt

时间:2018-04-16 11:52:49

标签: python sql csv text output

我正在尝试将从sql数据库中获取的一些数据导出到txt或csv文件。打印声明:

for x in range(len(data)):
        print(data[x]) 

这会输出我想要的内容,新行中的每个元素

(1, 90, Netherlands, male)
(2,  50, Germany, Female)

等等。现在,当我尝试将它放到文本文件中时,它只是将所有内容添加到一条长行中,所有信息都像常规print(data)命令一样粘贴在彼此之后。

我在下面发布了我的代码,因此您获得了上下文

sql = 'SELECT * FROM batch'
c.execute(sql)
data = c.fetchall()
list1 = []
addDataToList = list1.append(data)
for x in range(len(data)):
    print(data[x])

    with open('Rapport.txt', mode="w") as output:
    for x in range(len(data)):
        output.write("\n" .join(str(data[x])))

3 个答案:

答案 0 :(得分:1)

sql = 'SELECT * FROM batch'
c.execute(sql)
data = c.fetchall()
list1 = []
addDataToList = list1.append(data)
for x in range(len(data)):
    print(data[x])

with open('Rapport.txt', mode="w") as output:
    for x in range(len(data)):
        print(str(data[x]), file=output) 

答案 1 :(得分:1)

  

新行上的每个元素

然后试试这个

sql = 'SELECT * FROM batch'
c.execute(sql)
data = c.fetchall()
list1 = []
addDataToList = list1.append(data)
# construct output
outputString = ''
for x in range(len(data)):
   outputString = outputString + str(data[x]) + '\n'
# write output to file
with open('Rapport.txt', mode="w") as output:
   output.write(outputString)

顺便说一句,您要写入同一个文件x^2次,只有最后一次写入可见,因为您会一直覆盖最后一次写入。您应该小心嵌套的for语句。请参阅以下示例:

data = ['1', '90', 'Netherlands', 'male']
result = ''
for x in range(len(data)):
    print(data[x])

    #with open('Rapport.txt', mode="w") as output:
    for x in range(len(data)):
        #output.write("\n" .join(str(data[x])))
        result = result + (data[x] + ' ')

print (str(result))

输出:

  

1 90荷兰男性1 90荷兰男性1 90荷兰男性1 90荷兰男性

答案 2 :(得分:1)

使用write\n将内容写入每一行。

<强>实施例

with open('Rapport.txt', mode="w") as output:
    for i in data:
        output.write("{0} \n".format(str(i)))