【问题标题】:write header rows to csv python将标题行写入csv python
【发布时间】:2018-05-15 07:39:36
【问题描述】:

如何将标题添加到 csv 的第一行?

我的解决方案目前追加了所有内容

类似:writer.writerow(['DataA', 'DataB', 'DataC', 'DATA D'])[0]

我觉得有一种简单的方法可以做到这一点,但我忽略了显而易见的事情。

我在网上查看了很多示例,但仍在为如何在 csv 中轻松做到这一点而苦苦挣扎。

例如,假设我想抓取 SO 的数据 - 加载 selenium,将其写入四列,然后执行 20 页。我想每次都将标题写入第 1 行,然后附加抓取的数据

with open('C:\\fa.csv', 'a+', newline='', encoding="utf-8") as outfile:
    writer = csv.writer(outfile)
    writer.writerow(['DataA', 'DataB', 'DataC', 'DataD'])
    for row in zip(ZAW_text, RESULTS1, RESULTS):
        writer.writerow(row)
        #writer.writerows({'Date': row[0], 'temperature 1': row[1], 'temperature 2': 0.0} for row in writer)
        print(row)

【问题讨论】:

  • 这就是你的做法。我认为没有更简单的方法。
  • @Tyler.Exposure 非常好。好吧,就我而言,它附加了标题,因此对我不起作用。我如何解决这个问题,因为我想要第一行的标题。
  • 很确定我错过了一些东西。您可以在 csv 中指定列,当然行也是可能的。
  • 啊哈,我明白你做了什么。我正在发布答案。

标签: python python-3.x csv selenium


【解决方案1】:
import csv
import os

file_name = 'C:\\fa.csv'
fake_data = [[1, 2, 3, 4, 5, 4444, 6, 67], [1, 2, 3, 4, 5, 4444, 6, 67],
             [1, 2, 3, 4, 5, 4444, 6, 67], [1, 2, 3, 4, 5, 4444, 6, 67]]
headers = ['DataA', 'DataB', 'DataC', 'DataD']

if os.path.isfile(file_name):
  with open(file_name, 'a', encoding="utf-8") as outfile:
    writer = csv.writer(outfile)
    for datum in fake_data:
      writer.writerow(datum)
else:
  with open(file_name, 'w', encoding="utf-8") as outfile:
    writer = csv.writer(outfile)
    writer.writerow(headers)
    for datum in fake_data:
      writer.writerow(datum)

在第一行 open('C:\\fa.csv', 'a+', newline='', encoding="utf-8") 你有 a+ 这是 append 你想要 w 这是写。

看看这个:https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files

【讨论】:

  • 我明白了。在具有 20 个其他页面的示例中,该数据是否仍会附加到 csv.xml 中。还是会互相覆盖。
  • 不幸的是。标题需要位于第 1 行。数据需要在循环中追加
  • 每次你运行整个函数时,它都会覆盖文件,但是当它通过for循环时它会追加,因为你每次都在写一个新行。有意义吗?
  • 呃.. 有道理。如果可能的话,我宁愿不覆盖文件并保持不断增长的数据列表。那可能吗?嗯
  • 所以,这基本上是检查文件是否存在,如果存在,那么它只会追加到它,如果它不存在,它会写入标题行,然后继续写入新行它。
猜你喜欢
  • 2019-02-12
  • 1970-01-01
  • 2015-12-08
  • 2021-05-07
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多