【发布时间】:2018-04-22 13:14:30
【问题描述】:
我正在使用下面的代码将列表的内容写入 csv 文件。
import csv
text_file = open("memberstest.txt", "r")
lines = text_file.read().split(' ')
print(lines)
myfile = open('members.csv','w')
wr = csv.writer(myfile, delimiter=" ")
wr.writerows(lines)
myfile.close()
我遇到的问题是每个单词都写入一个新行,而不是将每个记录保存在单独的行中。例如,我的列表如下所示:
["['user1',", "'01/01/01',", "'blue',", "'green'['user2',", "'12/12/12',", "'pink',", "'orange']['user3',", "'03/03/03',", "'purple',", "'green']"]
当我执行我的代码时,我的 csv 文件如下所示:
[ ' u s e r 1 '
' 0 1 / 0 1 / 0 1 '
' b l u e '
' g r e e n ' ] [ ' u s e r 2 '
' 1 2 / 1 2 / 1 2 '
' p i n k '
' o r a n g e ' ] [ ' u s e r 3 '
' 0 3 / 0 3 / 0 3 '
' p u r p l e '
' g r e e n ' ]
它在每个单词和它连接在一起的每条记录中的最后一项和第一项之后留下一个行间隙。
我想看到的是:
user 1 01/01/01 blue green
user 2 12/12/12 pink orange
等等
我已经为分隔符尝试了不同的选项,甚至没有尝试过,但我没有取得太大的成功。任何指向正确方向的指针都将不胜感激。
【问题讨论】:
-
那是因为您提供的列表(或者更确切地说,文件中的列表)是 csv 文件正在写出的列表。尝试测试
lines[0]或lines[3]以查看列表在您阅读后的样子。 -
不,抱歉,没有达到预期的效果。不仅如上所示打印,而且一条记录中的最后一个单词和下一条记录中的第一个单词总是显示为连接的。
-
这就是我要说的——你的输入列表已经搞砸了,所以在你的脚本中纠正它需要付出很大的努力。尝试修复列表中正在读取的文件,您的脚本应该可以按预期运行。对于上下文,如果您也向我们提供
memberstest.txt中的内容,将会很有帮助。 -
好的,感谢您的回复。自从我最初发布以来,我一直在研究这个问题,所以我想提供我在纠正问题方面取得的进展。我将首先说明我是如何写到 memberstest.txt 的。然后我将显示文件的内容。然后使用用户的新密码编辑该文件并写回文本文件,因为当我尝试写入 csv 文件时,由于某种奇怪的原因,它会留下最后一项(管理员或访问权限)。我将通过添加“回答您的问题”来做到这一点。我现在大部分时间都在那里,因为我离得太近了。
标签: python list csv export-to-csv