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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

2006閲覧

pythonでcsv書き込みするときに改行したい

AGLAAGLA

総合スコア54

CSV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/06/04 12:22

python

1 with open('gps.csv', 'a') as f: 2 writer = csv.writer(f, lineterminator='\n') 3 writer.writerow(t+n)

t,nにはそれぞれ値が入っています。
csvには先頭ラベルがあり、
初期状態は

長さ 高さ

となっております。

そこでプログラムを実行したところ

長さ 高さ0 0 0   0 0   0 0   0

となっているのが現状です。
理想は

長さ 高さ 0   0 0   0 0   0

のように書き込んで行きたいのですが、最初の改行がうまくできません。
ご教授いただけないでしょうか?

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

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

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

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

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

melian

2022/06/04 12:56

ヘッダ行も書き込めばよいのではないでしょうか。 with open('gps.csv', 'w') as f: writer = csv.writer(f, lineterminator='\n') writer.writerow(['長さ', '高さ']) writer.writerow(t+n)
AGLAAGLA

2022/06/04 14:04

その場合、再び実行すると前のデータが消えてしまうのではないでしょうか?
melian

2022/06/04 14:24

はい、その通りです。そのプログラムを一度だけではなく何度も実行するという前提なのですね。
AGLAAGLA

2022/06/04 14:26

前提が記載されておらず、申し訳ないです。 ご指摘ありがとうございます。
bsdfan

2022/06/05 02:10

csvの初期状態のファイルを改行付きで作っておけばいいと思うのですが、それはできませんか?
AGLAAGLA

2022/06/05 07:14

ご指摘ありがとうございます。 csv形式で改行付きと言うのはどの状態でしょうか、、 現状では、プログラム実行前に、長さ、高さを記述しております。 その状態でも、質問の通り、高さのセルに数値が入ってしまします。
bsdfan

2022/06/05 13:17

> 現状では、プログラム実行前に、長さ、高さを記述しております。 ここの部分で修正する方が簡単な気がします。
guest

回答1

0

解決するには、以下の2つがあります。
next()で読み飛ばす方法
・pandasのpd.read_csv('gps.csv', index_col=0)でヘッダ付きでCSVを読み込む方法

どちらでも使いやすい方を使えばよいと思いますが、Pandasの方がデータの扱いがしやすいですので、将来性を考えると2つ目の方法がおすすめです。

いずれの方法も読み込んだあとはfor文を回しながら一行ずつデータを追加していくのは共通です。

投稿2022/06/04 12:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

AGLAAGLA

2022/06/04 14:14 編集

今回に関しては、短期的なものを作っているので、 ``` with open('gps.csv', 'a') as f: writer = csv.writer(f) header = next(writer) writer.writerow(t+n) ``` こんな感じになりますでしょうか? ※現在実行環境がないため、お聞きしております。
退会済みユーザー

退会済みユーザー

2022/06/04 14:26 編集

そういう感じでいいと思います。 ただし、writer.writerow(リスト)のため、もしt+nの中身がそれぞれ整数だと足し算の結果だけが追加されます。 ※ここがうまくいっていたら上のコメントは無視してください。 個々の説明はとても分かりやすく、すべての方法について実行できる例もありますので、実際に実行環境で試すときの参考になると思います。 https://tonari-it.com/python-csv-writer-writerow/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問