我正在尝试将从 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/