- 締切済み
csvカンマ区切りデータの特定列を置換したい
csvカンマ区切りデータの数百列のうち特定データに固定長文字列を入力したいのですが、 正規表現機能を使って文字列置換する方法が知りたいのです。 たとえば、 111, 2, 33,以降省略・・・,100 を 111,="02",="033",以降省略・・・,100 と言った様に置換したいのです。100は仮ですので入力が省けれれば省きたいです。 上記の場合は、2列目を2桁の文字列、3列目を3桁の文字列として入力する場合です。 以上、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- furoshiki
- ベストアンサー率41% (163/396)
#1 の説明から、1桁の場合にはどのように対処するか考えてください。 あるいは、秀丸などで、試行錯誤してください。
- furoshiki
- ベストアンサー率41% (163/396)
秀丸などの正規表現のできるソフトで検索、置換を行います。 特定値を下記のように表現します。 A. 25-29 <---25,26,27,28,29--> 2[5-9] で表現します。 120-169 <---120,121,122・・・168,169---> 1[23456][0-9] 5000-9999 <---5000,5001・・・・9998,9999--> [5-9][0-9][0-9][0-9] B. 2桁の数値を検索したいのであれば、 検索欄には行頭のとき:^[0-9][0-9], --> ^([0-9][0-9]), 検索欄には行末のとき:,[0-9][0-9]$ --> ,([0-9][0-9])$ 検索欄にはそれ以外(,):,[0-9][0-9], --> ,([0-9][0-9]), 上記AとBをくみあわせれば、正規表現で表せます。 3桁に置換するには、特定値を25の数値とすれば右側のようになります。 置換欄には:="0\1" --> ="025" 置換欄には:,="0\1", --> ,="025", 置換欄には:ABC000\1 --> ABC00025
お礼
回答を有難うございました。説明不足で申し訳けなかったのですが、 検索欄の入力値を2桁としたい場合に、2桁に満たない場合に0を先頭に埋めて それを複数行に置換したいのです。 特定列には指定した文字列長以上はデータが入らないものとし、何文字あるかは数千行あるため 0を先頭に埋めるか埋めないかは正規化の方でおこなうものとします。 特定列の置換は、複数あるものとし、最終列は仮で100列あるものとした場合に、特定列以降の列から99列までは省略して置換できる様にします。 ※100列分の正規化表現を検索欄に入力しないで済むようにしたい。