
各項目がダブルクォーテーションで囲まれたカンマ区切りのCSVを作る方法を
実は、↓ここで質問していたところ、、、
https://oshiete.goo.ne.jp/qa/11512940.html
以下の非常に有用な情報を得られました。(回答者の方、ありがとうございました。)
秀丸で正規表現にて下記の条件で置換すると、ダブルクォーテーションで囲むことができます。
検索
^(([^,]?)*),(([^,]?)*),(([^,]?)*),(([^,]?)*),((.?)*)$
置換
"\1","\2","\3","\4","\5"
※これで、改行以外のすべての項目に「"」が付きます。
ただし一点、私の特殊な場合のみですが、不都合が起きました。
分かりやすいように具体的に1レコードだけサンプルを挙げますと、
↓こんな感じのレコードで途中に税率の項目があります。
aaa,bbb,8%,ddd,2019/10/01
これを上記の方法で置換すると、こんな結果になりました。
"aaa","bbb,8%","ddd","2019/10/01"
↑分かりますでしょうか?8%の前部分にダブルクォーテーションが付かないのです。
これは"%"パーセントが特殊な意味を持つので邪魔していると大方推測してますが、
↓正しくこのように一発で置換させる方法はありませんか?
"aaa","bbb","8%","ddd","2019/10/01"
「,8%」→「","8%」にと、2回目の置換をすれば目的の結果は得られるので何とかなりはするのですが、せっかくなので追及してみたいと思いました。
詳しい方、よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> 途中に、
> ,0,0,0,0,0,0,0,1,0,
> のように0と1が続く列があるのですが、そこに全く異なる値が入り込んでしまい、
> めちゃめちゃな結果になりましたので、
この様な例も含めて、結局
> No.1 回答者の artoo さんの仰る
> > 普通のやり方では、正規表現 ([^,]+) をすべて "\1" に置換です。
で駄目なケースがあったのでしょうか?
「,」を含まないケースは、このシンプルな置換で列数に関係なく問題なくできると思うのですが…
> ,0,0,0,0,0,0,0,1,0,
の様にデータの一部でなく、上手くいかない具体的かつ再現する最小限の例が示されないと、これ以上のことは助言しようありません
No.2
- 回答日時:
> 検索
> ^(([^,]?)*),(([^,]?)*),(([^,]?)*),(([^,]?)*),((.?)*)$
> 置換
> "\1","\2","\3","\4","\5"
<snip>
> ↓こんな感じのレコードで途中に税率の項目があります。
> aaa,bbb,8%,ddd,2019/10/01
を秀丸エディタ Ver.8.86 で確認したのですが、ご希望の
> "aaa","bbb","8%","ddd","2019/10/01"
になりましたよ???
うまくいかないのはデータに「,」「"」が含まれるケースではないでしょうか?
なお
・列数に関係なく
・データに「,」「"」が含まれない
という CSV に限れば No.1 回答者の artoo さんの仰る
> 普通のやり方では、正規表現 ([^,]+) をすべて "\1" に置換です。
が手っ取り早く、今回の方法でも有効なのはその通りなので、通常はこの方法を使えば十分かと思います
もし列数を限る場合でも検索文字列は、投稿のように複雑である必要はなく
^([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)$
で十分です
ありがとうございます。
今回、実際に行った作業は、43列もあるCSVの整形でした。。。
これで十分との事でしたので、 → ^([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)$
以下の様な条件で秀丸で置換してみました。
検索
^([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)$
置換
"\1","\2","\3","\4","\5","\6","\7","\8","\9","\10","\11","\12","\13","\14","\15","\16","\17","\18","\19","\20","\21","\22","\23","\24","\25","\26","\27","\28","\29","\30","\31","\32","\33","\34","\35","\36","\37","\38","\39","\40","\41","\42","\43"
結果は、何故か偶数行が削除されてしまったのです。
つまり10万行あったものが5万行になってしまいました。
それで最初に私が書いた方法でやり直したところ、うまくいきました。
原因が分かると幸いです。
No.1
- 回答日時:
その正規表現と置換は間違っていると思って、前の質問を見ると、秀丸特有の方言なんですかね。
普通の言語の置換だと、その正規表現だと、置換文字列は"\1","\3","\5","\7","\9" です。
おそらく、% も、正規表現がどうのというより、秀丸の固有の問題かと思います。
普通のやり方では、正規表現 ([^,]+) をすべて "\1" に置換です。
ただし、空欄(カンマ連続)は引用符で囲まれずそのままです。
秀丸で、% がうまくいくかどうかはわかりませんが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
このQ&Aを見た人はこんなQ&Aも見ています
-
csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい
オープンソース
-
ダブルクォーテーションを含む正規表現について。
Java
-
各項目がダブルクォーテーションで囲まれたカンマ区切りのCSVを作る方法?
Excel(エクセル)
-
-
4
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
5
、(ダブルクォーテーション)で囲まれている文字列を正規表現で取得"
PHP
-
6
正規表現で囲まれた部分の文字列
その他(プログラミング・Web制作)
-
7
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
8
ダブルクォーテーション()で囲まれた範囲の改行のみ削除する方法を教えてください"
その他(Microsoft Office)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名を特定の文字までを...
-
置換のマクロ
-
Googleスプレッドシートでワイ...
-
Flexible Renamer 半角スペー...
-
ある文字列を含む<img>の削除
-
秀丸で行置換できますか?
-
秀丸エディタのマクロのことで
-
TeraPadでの置換方法
-
正規表現でファイル名を置換したい
-
秀丸エディタでHTMLの部分のURL...
-
いくつものテキストファイルの...
-
正規表現による拡張子の追加方...
-
【シェル】チルダの置換
-
エクセル
-
PS4コントローラーをPCでゲーム...
-
【VBA】PDFを2in1で出力したいです
-
WordにURLを載せると
-
エクセルでアルファベットか数...
-
4Kの外部モニターに出力すると...
-
変数内に入った文字列の結合 UWSC
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleスプレッドシートでワイ...
-
TeraPadでの置換方法
-
ファイル名を特定の文字までを...
-
《》で囲まれた文字をすべて削...
-
正規表現で最初にマッチしたも...
-
正規表現で完全一致したキーワ...
-
IME 郵便番号辞書 で 都道府...
-
ファイル名に空白がある時、一...
-
【正規表現に詳しい方】ダブル...
-
ワードを使用した特定かつ複数...
-
Excel VBAでWord文書とText文書...
-
Flexible Renamerの正規表現に...
-
(*)を_【*】に一括変換したいの...
-
WinMergeにて置換の際に、文字...
-
メモ帳の置換機能で特定の文字...
-
CSVファイルの文字列を置換...
-
Flexible Renamerの検索と置換...
-
EmEditorでの置換方法
-
どのブックでも使えるマクロの...
-
秀丸の正規表現で [ や ] 自体...
おすすめ情報
いや、私の方法でもダメでした。失礼しました。
途中に、
,0,0,0,0,0,0,0,1,0,
のように0と1が続く列があるのですが、そこに全く異なる値が入り込んでしまい、
めちゃめちゃな結果になりましたので、
今回は結局、いつもの通り、
, を "," に置換
¥nを”¥n”に置換してからファイル先頭に”を入れて、ファイル最後の"を消す手作業となってしまいました。
良い方法ないでしょうか?