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

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

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

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

Q&A

解決済

4回答

3818閲覧

CSVにコメントが含まれているファイルを空白行で分割したい。

Kentaro0919

総合スコア258

Python 3.x

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

0グッド

0クリップ

投稿2016/03/01 21:05

編集2016/03/01 21:06

今メンテナンスのできていないperlのコードが生成しているファイルがあり、出来上がったファイルをPythonで加工したいと思っています。

ファイルの内容のサンプル csvのデータの上にコメントが1行か2行


この下に続く区分けの名前
コメント行.....
E0000,0,0,
E0003,0,0,
E0002,0,0,
E00015,0,0,

上の区分の合計 空白行 コメント行..... E00022,0,0, E00033,0,0, E0002,0,0, E00015,0,0,

上の区分の合計


最初は単純に正規表現でCSVのデータを抜いてDBに入れてみたのですが、Eから始まる番号が
複数の区分けで登場することがわかり、コメント行をそれぞれの行の後ろにつけないと区別が
つかないことがわかりました。正規表現で空白行で一旦バラバラにして、各行の後ろにコメント行を
足すことを考えています。
空白行で区切る方法(.split(空白行)みたいな感じを想像しています) を試しましたが、(¥n¥n)ではうまくいきません。
一旦空白行でファイルを分割するか、または他のいい方法はないでしょうか。

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

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

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

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

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

coco_bauer

2016/03/02 02:16

具体的にどのような処理結果を得たいのかを説明してください。「Eから始まる番号が 複数の区分けで登場することがわかり、コメント行をそれぞれの行の後ろにつけないと区別が つかないことがわかりました」が何を意味していて、それが欲しい機能とどう関係しているのかも説明してください。可能であれば、実際のCSVファイルの内容を示して下さい。
guest

回答4

0

自己解決

with open(file, "r") as working_file:
sections = working_file.read().split("\n\n")

投稿2016/03/02 04:34

Kentaro0919

総合スコア258

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

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

0

エラー内容を確認しようともう一度やってみたら今度はうまくいきました。
ありがとうございます。

with open(file, "r") as working_file:
sections = working_file.read().split("\n\n")

投稿2016/03/02 04:31

Kentaro0919

総合スコア258

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

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

0

エラー内容を確認しようともう一度やってみたら今度はうまくいきました。
ありがとうございます。

with open(file, "r") as working_file:
sections = working_file.read().split("\n\n")

投稿2016/03/02 02:00

Kentaro0919

総合スコア258

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

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

0

■ perl が出力する csv ファイルがある。
■ それを python で読み込んで処理したい。

ということで良いでしょうか。

最初は単純に正規表現でCSVのデータを抜いてDBに入れてみたのですが、Eから始まる番号が

複数の区分けで登場することがわかり、コメント行をそれぞれの行の後ろにつけないと区別が
つかないことがわかりました。

ここがちょっとわからなかったのですが、
いくつかのグループに分かれていて、

コメント行 データ行 データ行 データ行 合計行 <空白> コメント行 データ行 データ行 合計行 <空白行> ...

みたいになっているのでしょうか。

どう取り込みたいのかが分からないのですが、

たとえばデータ行は先頭に何かのコードのようなものが付いているようですが、合計行はどうなっているのでしょうか。
その辺りと「次行が空白かどうか」などの条件を組み合わせて、合計行かどうかの判定(ひいてはグループの切り分け)ができないものかと思ったのですが・・・


なお本来の質問に立ち戻ると、

空白行で区切る方法(.split(空白行)みたいな感じを想像しています) を試しましたが、(¥n¥n)ではうまくいきません。

どううまくいかなかったのでしょうか。エラーが出ますか?分割できませんか?空白になってしまったりするのでしょうか。

「CSVファイルを一行ずつ読み込む」ところまではできているのでしょうか。
分割がうまくいかないです?
途中まで出来ているソースとかがあったら、読み込み&分割部分だけとかでも貼ると手っ取り早いかなとも思いますが。

投稿2016/03/02 01:15

sk_3122

総合スコア1126

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

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

Kentaro0919

2016/03/02 02:01

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問