
各項目がダブルクォーテーションで囲まれたカンマ区切りの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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ダブルクォーテーションを含む正規表現について。
Java
-
csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい
オープンソース
-
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
-
4
各項目がダブルクォーテーションで囲まれたカンマ区切りのCSVを作る方法?
Excel(エクセル)
-
5
正規表現で囲まれた部分の文字列
その他(プログラミング・Web制作)
-
6
、(ダブルクォーテーション)で囲まれている文字列を正規表現で取得"
PHP
-
7
ダブルクォーテーション()で囲まれた範囲の改行のみ削除する方法を教えてください"
その他(Microsoft Office)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleスプレッドシートでワイ...
-
正規表現で完全一致したキーワ...
-
正規表現で最初にマッチしたも...
-
秀丸で置換かマクロで括弧をと...
-
ファイル名を特定の文字までを...
-
IME 郵便番号辞書 で 都道府...
-
【正規表現に詳しい方】ダブル...
-
PS4コントローラーをPCでゲーム...
-
エクセルでアルファベットか数...
-
【エクセル】セル最後にある無...
-
Microsoft365で作ったword文書...
-
Chr(13)とChr(10)の違いは?
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
Accessのテーブルからcsv出力す...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
「彡」って文字はなんという文...
-
パワーポイントのテキストボックス
-
wordで均等割り付けをするとき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleスプレッドシートでワイ...
-
正規表現で最初にマッチしたも...
-
正規表現で完全一致したキーワ...
-
TeraPadでの置換方法
-
ファイル名を特定の文字までを...
-
(*)を_【*】に一括変換したいの...
-
ファイル名に空白がある時、一...
-
《》で囲まれた文字をすべて削...
-
IME 郵便番号辞書 で 都道府...
-
【正規表現に詳しい方】ダブル...
-
タグを一度に消去したい
-
文字の置換のソフトを探してい...
-
Flexible Renamerの正規表現に...
-
テキストエディタで各行を二重...
-
Flexible Renamerの検索と置換...
-
CSVファイルの文字列を置換...
-
秀丸エディターのマクロ
-
秀丸のマクロで
-
EmEditorでの置換方法
-
txtファイルの複数行の特定の文...
おすすめ情報
いや、私の方法でもダメでした。失礼しました。
途中に、
,0,0,0,0,0,0,0,1,0,
のように0と1が続く列があるのですが、そこに全く異なる値が入り込んでしまい、
めちゃめちゃな結果になりましたので、
今回は結局、いつもの通り、
, を "," に置換
¥nを”¥n”に置換してからファイル先頭に”を入れて、ファイル最後の"を消す手作業となってしまいました。
良い方法ないでしょうか?