【发布时间】:2018-12-01 10:35:11
【问题描述】:
我正在使用 python 3.6.0。我之前已经将字典写入 CSV 文件,但从来没有在已经包含文本的行上。我现在遇到了麻烦。这是我的代码:
import csv
f='/Users/[my name]/Documents/Webscraper/tests/output_sheet_1.csv'
bigdict = {'ex_1': 1, 'ex_2': 2, 'ex_3': 3}
with open(f, 'r+') as file:
fieldnames=['ex_1','ex_2','ex_3']
writer = csv.DictWriter(file, fieldnames=fieldnames,delimiter=',')
if '\n' not in file.readline()[-1]:
file.write('\n')
writer.writerow(bigdict)
当我运行它时,python 将字典附加到包含字段名的行之后的第一行,从字段名下方的最后一个单元格开始。也就是说,第一行包含许多条目,包括最后三个单元格中的ex_1、ex_2 和ex_3。在第二行中,除了ex_1、ex_2 和ex_3 下的单元格之外,我将值存储在所有单元格中,它们是空白的。 Python 在ex_3 下方写入整数1,并在其右侧的单元格中写入2 和3。
我想重新定位它们,以便每个数字都位于它们各自的字段名称单元格下。我该怎么做,为什么会这样?谢谢。
【问题讨论】:
-
你尝试
writer.writeheader(); writer.writrow(bigdict)了吗? -
@pstatix 我尝试使用
writer.writeheader(),但正如预期的那样,它创建了另一个标题,我不想要它,因为它已经在 CSV 文件中。我可以获取文件中的内容并将它们重写为一个新文件,但我不想这样做,因为文件非常大,我希望我的代码更有效率。 -
我不认为这会像你想象的那样发生。仅仅因为这些标头存在并不意味着它们会自动写在它们下面,因为您已经实例化了
DictWriter。 -
好的,据我所知,到目前为止,python 假定未列出的字段名下的所有内容都是空白的。如果不是这种情况,它基本上会破坏格式。话虽如此...将整个内容重写为新的 CSV 文件是最有效的方法吗?
标签: python csv dictionary file-writing