python - 在新行上将列表打印到 CSV 或 txt

标签 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])))

最佳答案

Every element on a new line

那就试试这个

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 Netherlands male 1 90 Netherlands male 1 90 Netherlands male 1 90 Netherlands male

关于python - 在新行上将列表打印到 CSV 或 txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856675/

相关文章:

python - vscode 智能感知不适用于 PyTorch

c# - SQLite C# 查询不起作用

mysql - 如何在此查询上进行内部联接

mysql - 如何通过交换两列值来更新MySQL表?

python - 如何在python中根据月、年、时间列标题编写csv文件名

python - pySpark forEachPartition - 代码在哪里执行

javascript - 使用 casper 登录 Facebook

python报告缺少参数

python - Pandas 被意外的分隔符搞糊涂了

python - 将列添加到 CSV 文件并在该列中插入文件名