【Python】CSVファイルのヘッダを出力時に失敗しないコツ

カブトムシの食欲はカブトムシの10倍以上でないかと、驚愕するセレブパンダだお。

あるサイトの通貨レートを取得するスクレイピングをしています。

常に更新されるレートを一定間隔で取得してファイルに出力するという内容です。

その時、レートだけだと後からみると何の値ってなるのが嫌なので、ヘッダー(タイトル)を出力することにしました。

そのタイトルを出力する際のはまった事についてシェアします。

こんな方におすすめ

PythonでTAB区切りでファイルを出力する方法を知りたい人

TAB区切りのファイルにヘッダを出力したい人

失敗例

header_list = ["通貨ペア","取得時刻","各判定レート"]

# CSVファイルへ上書き保存
with open(self.rate_csv_file_path, 'a', newline='\n',encoding='shift_jis') as f:
    writer = csv.writer(f, delimiter='\t')
    if row_cnt == 0 :
        writer.writerows(header_list)
    writer.writerows(hour_and_rate_list_w)
    row_cnt += 1

このままファイルを開いてみると

通	貨	ペ	ア
取	得	時	刻
判	定	レ	ー	ト
GBP/AUD	2021-09-06 13:35:17	1.86260	

タイトルが通貨ペア 取得時刻 判定レート出力されてほしいのに、改行されている。

しかも、各文字の間はタブで区切られている。

成功例

header_list = [["通貨ペア","取得時刻","各判定レート"]]

# CSVファイルへ上書き保存
with open(self.rate_csv_file_path, 'a', newline='\n',encoding='shift_jis') as f:
    writer = csv.writer(f, delimiter='\t')
    if row_cnt == 0 :
        writer.writerows(header_list)
    writer.writerows(hour_and_rate_list_w)
    row_cnt += 1
通貨ペア	取得時刻	各判定レート
GBP/AUD	2021-09-06 13:39:22	1.86280
GBP/AUD	2021-09-06 13:39:25	1.86280

ポイントは[]の中に[タイトル1,タイトル2,タイトル3]と書くことでした。

あと、CSVではなくTAB区切りで出力したい場合

writer = csv.writer(f, delimiter='\t')

とすればOKです。簡単でしょ。

delimiter='\t'

を書かないとカンマ区切りでの出力になります。

では、まただお。

Twitterでフォローしよう

おすすめの記事