質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

835閲覧

リクエストの結果をcsv出力する際、ヘッダー情報をスキップしたい

azzuro

総合スコア53

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/02 06:31

編集2020/11/02 06:56

前提・実現したいこと

webリクエストに初めて取り組んでいます。
あるサイトから企業の住所履歴を取得するため、会社コードを投げて返ってきた内容を
csvに出力します。
取得したい企業は1社ではないため、繰り返し実行しcsvに結果を追記します。
取得内容にはヘッダー情報が含まれますが、不要なためスキップして出力したいです。

発生している問題・エラーメッセージ

取得内容の1行目にあるヘッダー情報をスキップしたいのですが、やり方がわかりません。
csvのヘッダーをスキップして別のcsvに出力するといったような感じで、スキップすることはできないのでしょうか。

csvにはこんな感じで出力されてしまいます。
イメージ説明

ヘッダーをスキップして下記のように出力したいです
イメージ説明

該当のソースコード

python

1# リクエスト 2res = requests.get(url, stream=True) 3# 書き込み 4with open(target, "w", encoding='utf_8') as f: 5 f.write(res.text) 6

試したこと

リクエストの段階でヘッダーなしの指定ができればいいのですが、調べてもわかりませんでした。

補足情報(FW/ツールのバージョンなど)

python 3.8.1
vscode 1.48.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

取得内容の1行目にあるヘッダー情報をスキップしたいのですが、やり方がわかりません。

...

リクエストの段階でヘッダーなしの指定ができればいいのですが、調べてもわかりませんでした。

ここで言うヘッダーとは、CSVのヘッダーですね。CSVの1行目のヘッダーは、requests.get()で得られるHTTPレスポンスのコンテントボディに含まれるので、そういった操作はできないと思います。また、質問文中に貼られた画像で見るかんじ、CSVと言うよりはTABコードで区切られたTSVなデータなのではないかな、と思います。

とりあえずCSVであろうがTSVであろうが、各行のデータは改行コードで区切られているように見えますので、res.textの最初の改行コード\nまでスキップしてからf.write()することで、1行目を除去することができるはずです。

Python3

1with open(target, "w", encoding='utf_8') as f: 2 # f.write(res.text) 3 # 改行('\n')文字の位置を取得 4 top = res.text.find('\n') 5 # 最初の'\n'の次の文字、つまり2行目から末端まで書き込み 6 f.write(res.text[top + 1:]

投稿2020/11/02 07:00

dodox86

総合スコア9256

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azzuro

2020/11/02 07:13

できました! やはり、出力後で細工するしかないのですね。 おしゃる通り、サンプル画像はdelimiterをタブに置換したものです。 補足が必要でした。 この度はどうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問