【发布时间】:2013-09-30 11:28:12
【问题描述】:
我正在尝试为一个更大的项目打开、转换、操作和保存一个测试 CSV 文件。到目前为止,我已经打开了文件,将其转换为列表并对其进行了操作。但我无法将其保存为格式正确的 CSV 文件。
目前,它可以保存,但由于某种未知原因,每列的分隔符似乎是 ' '。我的数据集基于已售房价/位置/日期,因此每当时间(数据和时间之间)和位置(街道名称、城镇等之间)出现中断时,我都会得到一个新列,而所有其他没有空格的数据(价格、身份证号等)都放在同一列中,搞砸了我的数据。
另一方面,由于某些奇怪的原因,我的 csv 文件在每行之间保留了几个空行。我不知道发生了什么。
这是代码中有问题的部分:
def write_new_file(lst, new_file):
'''(lst)->.CSV file
Takes a list and writes it into a .CSV file.
'''
writer = csv.writer(new_file, delimiter=',')
writer.writerows(lst)
new_file.close()
这是我在 shell 中的输出:
>>> doc[0]
['{AACDC187-2E3E-4705-BCF3-0001C4187ADD},', '208000,', '28/06/2013 00:00,', 'AL23HX,', 'F,', 'N,', 'L,', '17,', ',', 'TENNYSON ROAD,', ',', 'ST ALBANS,', 'ST ALBANS,', 'HERTFORDSHIRE,']
感谢任何帮助!
编辑:我已经编程了几个星期了,如果我是个白痴,请见谅!
编辑 4:
我已更改我的代码以使用 csv.reader 函数,该函数运行良好,并且使程序更小。现在看起来像这样:
#create an empty variable
doc= []
with open(file2, 'r') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
doc.append(row)
这是我的 shell 输出:
>>> doc[0]
['{AACDC187-2E3E-4705-BCF3-0001C4187ADD}', '208000', '28/06/2013 00:00', 'AL2 3HX', 'F', 'N', 'L', '17', '', 'TENNYSON ROAD', '', 'ST ALBANS', 'ST ALBANS', 'HERTFORDSHIRE', 'A']
但我的 CSV 输出是相同的,列是根据字符串中的空格而不是根据分隔列表项的逗号分隔的。而且行之间还有一个空行。
我的写作功能没有改变。
最终编辑:已解决! calc 最终搞砸了,而不是 Python。
【问题讨论】:
-
请同时显示读取文件的代码。这就是问题所在。
-
谢谢蒂姆我添加了代码。
-
这实际上并没有打开文件。你用什么代码将文件读入
doc? -
你既没有展示你作为'lst'传递给你的函数的东西,也没有展示
doc是什么以及你是如何构建它的,所以我们无能为力。请阅读:sscce.org -
您应该使用
csv.reader重新读取文件,而不是滚动您自己的 csv 阅读器。请参阅 Erik 的回答。
标签: python csv python-3.x export-to-csv