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

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

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

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

Python

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

Q&A

解決済

1回答

869閲覧

Python CSV出力

ryuchip

総合スコア1

CSV

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

Python

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

0グッド

0クリップ

投稿2021/04/20 02:45

編集2021/04/20 03:44

前提・実現したいこと

コンマで区切られたテキストファイルを読み込んでCSVに書き込み出力するプログラムを作製したいです。

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

以下の内容を記載したテキストファイルを読み込みました。

この内容をそのままCSVとして出力したかったのですが、以下のコードを実行しエクセルでCSVを読み込んだところ、A列に1行分の文字がすべて入ってしまい、コンマで区切ることができませんでした。

また、何故か各行の最初にコンマが入ってしまっています。

以下、読み込んだテキストファイル(test.txt)、メモ帳で作成したファイルです。
No.,52
日付,2021/04/20 11:13:43

縦長さ [mm], 100
横長さ [mm], 100
縦横比, 1

データNo.,条件1,条件2
1,300,2
2,350,2
3,400,2
4,450,2
5,500,2
6,550,2
7,600,2

該当のソースコード

import

1 2with open("test.txt",'r',newline="",encoding="utf-8") as data1: 3 4 lines=data1.readlines() 5 print(lines) 6 7with open("test.csv","w",newline="",encoding="utf-16") as f: 8 writer=csv.writer(f)#読み込んだデータをエクセルのセルで区切って表示する 9 writer.writerow(lines) 10コード

試したこと

読み込み方法(read(), readlines(),readline())や出力方法(writerow(), writerows())、csv.writer()でのデリミタ、read()で読み込んだテキストのsplit()等色々試してみましたが、上手くいきませんでした。

当方Pythonを使うのが初めてで、書籍やネット検索で解決策を探していましたが上手くいかなかったため、ここで質問させていただいた次第です。

よろしくお願い致します。

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

Jupyter Notebookを使用しています。

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

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

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

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

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

sasakaman

2021/04/20 03:24 編集

どこからどこまでがtxtファイルの内容なのか、excelで表示された内容なのかが判別できません。 わかりやすく書き換えをお願いします。 また、コードのインデントが崩れています。 Markdownのコード記述方法を参考に修正してください。
ryuchip

2021/04/20 03:44

ご指摘いただきありがとうございます。 ご指摘の通り修正致しましたが問題ないでしょうか。 また、エクセルで開いた画面の画像の挿入ができなかったため、excelで表示された内容をお示しすることができません。 excelに表示された内容は、テキストファイルの行に記載の内容がコンマで区切られることなくすべてA列に収まってしまっている、というものです。
guest

回答1

0

ベストアンサー

test.txtの中身は既にcsvファイルです。
したがって、以下の方法でエクセルで読み込めます。

pythonを使わずにtest.txtの名前をtest.csvに変更する。
エクセルでtest.txtを開く。

なお、1行に入ってしまう理由は、writer.writerowの引数がリストである場合は、そのそれぞれがセルに入るためです。

練習問題としてやるなら、読みこんだ各行を','でsplitして、各行ごとにwriter.writerowで書き込むというのをfor文で回せば可能です。

投稿2021/04/20 03:46

編集2021/04/20 03:52
ppaul

総合スコア24666

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

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

ryuchip

2021/04/20 09:49

ご回答いただきありがとうございます。 特殊な拡張子のテキストファイル(コンマ区切り)をエクセルでcsvに変換する作業が時々発生するのですが、それが面倒だと感じたためにPythonで処理したいなと思い今回のプログラムを作っています。 ですので、Pythonで読み込むコードを書きたいのですが、ご助言いただいたのは、「readline().split(",)でテキストファイルを1行読み込んで分割する」というのと、「読み込んで分割したテキストをwriter.eriterowでcsvに書き込む」というのを1つのfor文で回すという解釈で合っていますでしょうか? その場合、1つの操作をfor文で回すやり方はわかるのですが、2つの操作をfor文で回すやり方がよくわからないため、簡単なコードの例を示していただけると大変助かります。 お手数をお掛けしてしまいますが、もし可能であればご教示いただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問