CSVファイルで、"(半角のダブルクォテーション)を取り除く方法についてご相談致します。


該当のCSVファイルですが、
容量が約200MBあり、レコード数は約30万、カラム数は約50あります。

"(半角のダブルクォテーション)があるデータは数百万箇所に及び、
所有パソコンのスペックのせいもあるかもしれませんが、
メモ帳やMS-Acces、フリーの置換ソフトの利用によりダイレクトに
置換をかける方法では上手くいきませんでした。
(処理が固まってしまうようです)

多少時間がかかってもよいので、コマンドプロンプトを使うとか
上手い方法がありましたら、ご紹介いただければ幸いです。


※"(半角のダブルクォテーション)は全てのデータが保持しているわけではありません。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2010/02/03 21:41:20
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答10件)

id:maxpower No.1

回答回数522ベストアンサー獲得回数24

一旦Excelで開いて、全てのデータを数値にして保存する。・・・では?

id:miku1973

Excel2002なので65535行制限があり、ちょっと厳しいです。

2010/02/01 16:06:33
id:dev_zer0 No.2

回答回数332ベストアンサー獲得回数25

ポイント40pt

http://www.vector.co.jp/soft/dos/util/se008493.html\

ここからsedのツールを落としてきて

exeにパスを通して、変換したいファイルにcdして

sed s/\"//g bef.csv > aft.csv

※bef.csvは該当のCSVファイル, aft.csvは"を取っ払ったファイル

とすればOKです。

id:miku1973

> exeにパスを通して、

   

スキルが無さ過ぎて、この作業がわかりませんでした。残念・・・。

2010/02/01 17:05:16
id:HALSPECIAL No.3

回答回数407ベストアンサー獲得回数86

ポイント40pt

過去回答ですが、

こちらはいかがでしょうか?

http://q.hatena.ne.jp/1255144176

id:miku1973

実はこの方法は既にためしたのですが、

"(半角のダブルクォテーション)

を該当箇所にそのまま記入してはダメなようです。

  

"(半角のダブルクォテーション)

でなければ置換できます。

  

"(半角のダブルクォテーション)

を置換したい場合、どのように記述すればよいでしょうか。

 

 

 

2010/02/01 19:20:02

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 goobee 88 83 12 2010-02-01 16:33:29
2 regnif 56 51 20 2010-02-01 16:45:51
3 e55ind 162 141 4 2010-02-01 17:56:17
4 km1967 541 450 40 2010-02-01 19:18:20
5 mht91 1 0 0 2010-02-01 19:26:00
6 Scorp 2 1 0 2010-02-01 20:11:25
7 AND0 179 163 10 2010-02-01 22:29:34
  • id:maxpower
    補足しておきます。
    ExcelからCSVファイルを開くときにカンマ区切りのデータを選択して、それぞれのデータは文字列ではないデータ種を選択してください。
  • id:seble
    csvとは言っても実体は単なるテキストなので、問題は容量ですよね。
    開けるエディタさえ見付ければ何とかなるかと、、、
    http://jp.emeditor.com/
    http://www.szkwjp.com/
    ワードとか一太郎は?と思い、やってみました(暇だな、オイ)
    200MBのテキストファイルを作るのも面倒だったけど、
    (csvは元になる大きなファイルが無かったのでパス)
    ワード98(こんなのしか持ってない)は、テキストを開く段階でdocに変換してるようで、途中でお断りされました(ゲイツ君、付き合い悪い)
    一太郎(バージョンは11、ちょっと新しい)は時間がかかったものの、開けて、普通の文書だったので「。」を置換で消してみました。
    ずいぶん待たされましたが何とかできた。
    「223xxxx個置換しました」ヨシヨシ
    が、
    いざ、保存しようとしたら
    「空きメモリが足りません」
    ここでも断られた、、、orz
    という事で、もうちょい環境が良くて、軽いエディタならできるのでは?
    (penM1.6GHz、メモリ2GB)
    ファイルを分割して容量減らすべきだと思いますけどね、、
  • id:SALINGER
    VBAで作って見たけどHALSPECIALさんの以前の回答とほとんど同じでした。
    置換前文字列 「""""」
    置換後文字列 「""」
    とすればいいですよ。
  • id:b-wind
    >csvとは言っても実体は単なるテキストなので、問題は容量ですよね。
    いやぁ、実際は単なるテキストだが「厳密なフォーマットが決まっていない」ファイルでもあるので
    結構面倒くさいよ。

    Excel の出力する物がデファクトスタンダードとも捉えられるけど、これですら難解。
    項目中の改行とか項目自体にダブルクオートやカンマが入った場合どうするかとかね…。

    例外処理さえ考えなければシンプルそのものなんだけど。
  • id:seble
    あんまし難しい事言われると、
    Freeeeeeeze...
    雪じゃ・・・
  • id:miku1973
    HALSPECIAL さんの方法でやりましたが、

    http://pub.idisk-just.com/fview/qTXX5emK7xt1jJFhX0tr7xTDNHG0PK0wlI9CJ5y6ZvlxsL4pN07lrBi1dvq9ZggZ/5ZCN56ew5pyq6Kit5a6aIDE.jpg
    30分くらい動きましたが最終的にこのようなメッセージでした。
  • id:t-wata
    HALSPECIALさんの方法だと、1つのファイルを全部読み込んで置換して上書き、という処理になっているので、
    小さいファイルならいいけど200MBのファイルだときついんじゃないかな?
    1行読んで置換して1行書いて、を繰り返すような処理じゃないと。
  • id:SALINGER
    HALSPECIALさんのはFileSystemObjectでreadlineで1行づつ読み込むのかと思ったらreadallでしたか。
    私が余計なコメントを書いてしまったようですね。
    罪滅しで1行づつ読み込むコードを回答してもいいけど、先に回答してる人におまかせします。
  • id:airplant
    b-windさんが言われている通り、元データに含まれる文字が分かれば、後は変換方法が決まるので、組むだけですね。

    1.データの途中にカンマ、ダブルコーテーション、改行はあるか?
    → この場合、デファクトCSVでは、項目をダブルコーテーションで囲むので特別な処理が必要になってきます。"を外すだけだと、とんでもないことになってしまいます。
    ●元のデータ
    1,000 abc
    1000 a"bc
    1000 a<改行>bc

    ●CSVにしたデータ(=今回の変換元ファイル)
    "1,000",abc
    1000,"a""bc"
    1000,"a
    bc"

    2.もし、データにカンマ、ダブルコーテーション、改行がなければ、"を外すだけです。
  • id:HALSPECIAL
    HALSPECIAL 2010/02/02 09:22:13
    >t-wata さん
    >SALINGER さん
    ごもっともです。失礼しました。
  • id:airplant
    結局dev_zer0さんの回答の方法で解決されたということでしょうか?
    少し気になったもので。

    sedは、結構使えますからねぇ・・・

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません