• 締切済み

特定の文字を削除したい

<元データ> 1955/03/08,東京太郎BD,東京 営業 1978/12/28,山田花子S,横浜 管理 1970/07/07,佐藤次郎KK,東京 管理 といったCSVデータから特定の文字(名前後のローマ字/1or2桁)をPerlを使用して削除する方法を教えて下さい。 <実行後> 1955/03/08,東京太郎,東京 営業 1978/12/28,山田花子,横浜 管理 1970/07/07,佐藤次郎,東京 管理 宜しくお願いします。

  • Perl
  • 回答数1
  • ありがとう数1

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

日本語文字列と混在する場合は、encoding指定をして下さい。 $data[1] =~ s/[a-zA-Z]+\Z//; が末尾の英文字を削除している部分です。 また、区切りが全角のカンマになっているようですが、大丈夫ですか? $DELIMITER =","; を適宜変更して下さい #------------------------------------------------------ use encoding 'shiftjis'; $DELIMITER =","; while(<DATA>){ @data=split /$DELIMITER/; $data[1] =~ s/[a-zA-Z]+\Z//; print join $DELIMITER, @data; } __END__ 1955/03/08,東京太郎BD,東京 営業 1978/12/28,山田花子S,横浜 管理 1970/07/07,佐藤次郎KK,東京 管理

KohakuNyanko
質問者

お礼

ご回答ありがとうございます。 色々いじっている内に欲しい結果が得られてしまったのですが、違うやり方もあると分り大変に勉強になりました。 削除したい英字が特定のモノと判明したので、以下のスクリプトで変更できました。合わせてご連絡いたします。 本当に有難うございました。 #---------------------------------------------- if($count != 0){ @part1 = split(/\,/,$record); $csv1 = $part1[0]; #日付 $csv2 = $part1[1]; #氏名 $csv3 = $part1[2]; #区分 #取引先名から口座記号を削除する $csv1 =~s/Uk$|U$|Mk$|M$|Tk$|T$//;  Print '"'.$csv1.'","'.$csv2.'","'.$csv3.'"\n";

関連するQ&A

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • バラバラになっている名前をきれいに並べたい

    エクセルで表を作成しています。 山田太郎  東京 鈴木花子  神奈川 佐藤一太郎 千葉 山田太郎  東京 山田太郎  東京 鈴木花子  神奈川 佐藤一太郎 千葉 ↓ 山田太郎  東京 山田太郎  東京 山田太郎  東京 鈴木花子  神奈川 鈴木花子  神奈川 佐藤一太郎 千葉 佐藤一太郎 千葉 のようにきれいに並べる方法はないでしょうか? よろしくおねがいします。

  • 次の条件を満たすSQL文をご教示下さい。

    テーブル名: list no | first_name | last_name | comment ----+------------+-----------+--------- 1 | 太郎 | 山田 | ほげ 2 | 次郎 | 田中 | ふが 3 | 花子 | 山田 | ぴよ 4 | 三郎 | 佐藤 | ぴよ 5 | 太郎 | 山田 | ぴよ 6 | 次郎 | 田中 | ふー 7 | 三郎 | 佐藤 | ふー 8 | 花子 | 山田 | ふー 上記の表から同じ”last_name”を持つ人の”first_name”と”last_name”を重複無しで抽出する(下記のような結果)SQL文は作成可能でしょうか。 結果 first_name | last_name ------------+----------- 太郎 | 山田 花子 | 山田 宜しくお願いします。

  • EXCELで進級処理をするには

    昨年の学校全体成績データ(+個人名簿)2004.csv と クラス替え・進級後の個人名簿 2005.csvがあります。 2004.csvを使って昨年の成績を2005.csvのデータに 移動することはできないのでしょうか? 例) 2004.csv 年,組,名前,点数1,点数2 1,1,山田太郎,4,3 1,2,山田花子,3,3 2005.csv 2,1,山田花子 2,2,山田太郎 ↓ 2,1,山田花子,3,3 2,2,山田太郎,4,3

  • Excelファイルから住所宛名印刷をする方法

    Excelファイルから住所宛名印刷をするにはどうするのでしょうか? Excelファイルに沢山の宛名と氏名が記入されています。これを使って封筒に貼り付けられるように宛名印刷をしたいのですが、どうすればいいのか分かりません。 例)Excelファイル>>> 山田太郎 〒555-5555 東京都AAAAAAA 山田次郎 〒444-4444 横浜市BBBBBBB 山田花子 〒333-3333 大阪市CCCCCCC となっているのを宛名のフォーマットに合わせて _________________________ | | 〒555-5555 | 東京都AAAAAAA |   山田太郎  | _________________________ | | 〒444-4444 | 横浜市BBBBBBB |   山田次郎  |     : と自動的に変換して印刷したいのです。 ご存じの方、教えてください。

  • エクセルについて

    エクセルについて、 山田太郎  150 154 155 156 佐藤花子  151 153 158 高橋二郎  152 159 162 163 164 165    : (それぞれ別のセルに入力) というようなシート(1)の横書きのデータをもとにして、別のシート(2)の 150 151 152 153 154 : という縦書きの数列の横に、シート(1)の対応する名前 150 山田太郎 151 佐藤花子  152 高橋二郎 153 佐藤花子 154 山田太郎  : を表示させる方法をご教授願います。 実際のデータはシート(1)、シート(2)ともに膨大なデータのため、手作業の処理は 困難な状況です。 よろしくお願いいたします。m(_ _)m

  • 営業成績ランキング表(エクセル)

    営業成績のランキング表をエクセルで作りたいです。 当然のことながら、手作業ではなく一瞬で変換する方法です。 基本的なことで恐縮ですが、、作成方法教えてください。 よろしくお願いします。 (いつもはピボットテーブルで作成していましたが、エクセルでのランキング表を希望しています) 山田 太郎 北口支店 500 木村 次郎 西山支店 200 山田 太郎 北口支店 300 佐藤 三郎 東支店  1000 佐藤 三郎 東支店   200 山田 太郎 北口支店 600 (実際は膨大なデータです) ↓ 1位 山田太郎 北口支店 1400 2位 佐藤三郎 東支店   1200 3位 木村次郎 西山支店  200  

  • エクセルで文字を活かしたままセルの結合を・・・

    なぜこんなことを?と思われてしまうかもしれませんが、 二つのファイルがレイアウトがばらばらで どうしてもタイトルのような作業を行いたいので、教えてください!      A      B 1  山田太郎   佐藤花子 とあるものを     A 1 山田太郎、佐藤花子 としたいのです。 かなりの行数があり、 =A1&B2 と言った作業ですと どうしても 山田太郎佐藤花子 と続き文字になってしまうのをひとつひとつ名前の間に「、」を入れるのは手間がかかってしまうものですから・・・。 間に「、」を入れつつセルを結合させる方法はございませんでしょうか? 二つファイル(A,B)があって、Aは1つのセル内に名前が羅列され、もうひとつのファイルBは上記のような状態のものなんです。 これをひとつにまとめたいんです。 ひとつのセルを分離させる方法(AをBに合わせる)はあるのですが、どうしても結合という方法で処理をしたいのです。 ぜひお教えください!!

  • ピボットテーブルで同じデータがうまく集計できない(Excel2003)

    ピボットテーブルで同じデータがうまく集計できない(Excel2003) こんにちは。 Excel2003で、個人の支払金額のリストを作成し、それを元に ピボットテーブルを作成していますがうまくいきません。 【例】  山田花子 3,000  佐藤太郎 5,000  田中一郎 5,000  山田花子 1,500  ↓ピボットにすると  山田花子 3,000  山田花子2 1,500  佐藤太郎 5,000  田中一郎 5,000 という結果になってしまいます。 本来は山田花子は1件で4,500になるはずですが…。 元のリストのデータを入力し直して更新しても改善されません。 元のリストのデータに余分な空白やシングルクォーテーション等が 入力されていないかも確認しましたが、ありませんでした。 ご教授宜しくお願いします!

  • 関数を使って重複するデータを抽出するには?

    今各年度の重複データの抽出の方法がわからなくて困っています。 H20年度         平成21年度 ID   氏名   住所  ID   氏名   住所 102 山田太郎  東京  505 山田次郎  福岡 205 山田花子  京都  603 山田五郎  滋賀 505 山田次郎  福岡  205 山田花子  京都 のような表があって H20と21で重複する人を別表に抽出したり、逆に重複しない人を抽出するにはどのような関数を使えばいいのでしょうか? よろしくお願いします

専門家に質問してみよう