こんにちは。
最近Rubyでスクローリングをしているのですが、その中で文字の挿入をする場面がありました。
今現在はgsub!を用いた置換で無理矢理くっつける形を取っているのですが、
どうも効率が悪く、汎用性に欠けるような気がします。
何かもっといい方法があるのでしょうか。
曖昧な質問で申し訳ありませんが、よろしくお願いします。
以下プログラムになります。
57 when /株式数(株)\t貸借対照表計上額(千円)|株式数(株)\t貸借対照表計上額(千円)/
58 while text.match(/\d[0-9]*?\t/)
59 text.sub!(/\d[0-9]*?\t/){|s|s.concat("株1")}
60 text.sub!(/\t株1/,"株q")
61 text.sub!(/\d[0-9]*?\t/){|s|s.concat("円")}
62 text.sub!(/\t円/,",000円q")
63 end
64 text.gsub!(/q/,"\t")
改変しようとする部分の原文は以下のような文章です。
当事業年度銘 柄株式数(株)貸借対照表計上額(百万円)保有目的
(株)ナガホリ 192,000 47取引の円滑化
(株)東日本銀行 181,000 45取引の円滑化
(株)大垣共立銀行 99,000 27取引の円滑化
イオン九州(株) 16,027 25取引の円滑化
(株)名古屋銀行 37,000 14取引の円滑化
(株)みずほフィナンシャルグループ 63,800 13取引の円滑化
(株)三菱UFJフィナンシャル・グループ 22,700 12取引の円滑化
(株)桑山 8,800株 5,000,000円取引の円滑化
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
念のための確認です。
本来のデータはタブ区切りのところ当質問サイトではタブ文字が使えないため全角空白で代用されているということ、額と保有目的の間にも本来はタブ文字が入っていることがご呈示のコードから読み取れたのですが、それで間違いないでしょうか。
上記の仮定のもとで、なおかつご呈示のコードは千円単位のデータに対応したもののようですのでそれに合わせてご呈示のコードの 58 行目から 64 行目を書き換えてみました。
text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1}株\t#{$3},000円\t"}
以上。百万円単位のデータに対応したコード部に対しては、上記で書き換える前の行と似た行があるでしょうから、そこを上記のコードに置き換え、#{$3},000円 の部分を #{$3},000,000円 に書き換えてください。
……でも、『(株)三菱UFJフィナンシャル・グループ』の行は額に全角文字が含まれているのでこの行は変換できません。
No.2
- 回答日時:
……いやだから、「○○という行を××のように変えたい」というのをはっきり書いてもらわないと困るんですが。
最初にご呈示の
当事業年度銘 柄株式数(株)貸借対照表計上額(百万円)保有目的
(株)ナガホリ 192,000 47取引の円滑化
(株)東日本銀行 181,000 45取引の円滑化
(株)大垣共立銀行 99,000 27取引の円滑化
イオン九州(株) 16,027 25取引の円滑化
(株)名古屋銀行 37,000 14取引の円滑化
(株)みずほフィナンシャルグループ 63,800 13取引の円滑化
(株)三菱UFJフィナンシャル・グループ 22,700 12取引の円滑化
(株)桑山 8,800株 5,000,000円取引の円滑化
をどう変えたいか改めて補足願います。
この回答への補足
説明が分かりづらくてすいません。
(株)ナガホリ 192,000 47取引の円滑化
この行を例にとると、
(株)ナガホリ 192,000株 47,000,000円 取引の円滑化
↑このように付け加えをしたいと考えております。
最終的に
当事業年度銘 柄株式数(株)貸借対照表計上額(百万円)保有目的
(株)ナガホリ 192,000株 47,000,000円取引の円滑化
(株)東日本銀行 181,000株 45,000,000円取引の円滑化
(株)大垣共立銀行 99,000株 27,000,000円取引の円滑化
イオン九州(株) 16,027株 25,000,000円取引の円滑化
(株)名古屋銀行 37,000株 14,000,000円取引の円滑化
(株)みずほフィナンシャルグループ 63,800株 13,000,000円取引の円滑化
(株)三菱UFJフィナンシャル・グループ 22,700株 12,000,000円取引の円滑化
(株)桑山 8,800株 5,000,000円取引の円滑化
↑このようにする事が理想です。
No.1
- 回答日時:
……すみません、ご呈示の原文に対する改変結果がこうあってほしいというものを補足願います。
多分ですが、正規表現とブロックの中を工夫すれば sub は 1 回で済むと考えられます。
この回答への補足
すいません。失念しておりました。
以下に希望の結果を掲示します。
当事業年度銘 柄株式数(株)貸借対照表計上額(百万円)保有目的
(株)T&Dホールディングス243,280株276,000,000円工事受注を主とした取引関係維持強化
岡谷鋼機(株)241,500株273,000,000円工事受注および仕入れを主とした取引関係維持強化
京王電鉄(株)336,129株271,000,000円工事受注を主とした取引関係維持強化
飯野海運(株)388,000株268,000,000円工事受注を主とした取引関係維持強化
(株)キッツ567,100株267,000,000円工事受注および仕入れを主とした取引関係維持強化
新晃工業(株)290,000株255,000,000円工事受注および仕入れを主とした取引関係維持強化
(株)歌舞伎座50,000株242,000,000円工事受注を主とした取引関係維持強化
当事業年度銘 柄株式数(株)貸借対照表計上額(千円)保有目的
(株)三菱UFJフィナンシャル・グループ42,000株22,932,000円取引関係の維持・強化
(株)みずほフィナンシャルグループ61,000株12,261,000円取引関係の維持・強化
(株)フジ6,444株11,264,000円取引関係の維持・強化
片倉工業(株)4,687株5,348,000円取引関係の維持・強化
(株)サンエー240株680,000円取引関係の維持・強化
このように、千円と百万円のケースで分かれて、株式の項目の数字の後ろに「株」の文字を、
金額の数字の後ろに「,000円」または「,000,000円」を追加したいと考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
1、Rstudioで回帰直線を求める...
-
pandasでsqlite3にテーブル作成...
-
PysimpleGUIでデータベースを作る
-
Accessで文字列のバイト数読み込み
-
電子書籍作成、epubファイルの...
-
パソコンのスクリーンセーバー...
-
教えてください
-
英数字を含む文字列(0-9,A-Z)...
-
MacBookAir起動時にRubyソース...
-
A4 持ち込み
-
前回の質問の続き
-
あせんうぶり言語
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
-
pythonのerrorコード
-
三項でたとえば交換って
-
WinSCPで画像のように puttyを...
-
こういう問題分をよんだとき
-
バーチャルボックスが使えなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby 正規表現で特定の文字を取...
-
Ruby 正規表現と置換
-
Rubyにおける、XPathの関数「te...
-
Rubyの正規表現、文字の追加
-
Ruby 改行文字の挿入
-
バッチ処理 特定の文字以降を...
-
VBAでcsvファイルもシートもあ...
-
Excelマクロ 空白セルを無視し...
-
ダブルコーテーション付きでCSV...
-
【ExcelVBA】300万件越えCSVか...
-
ファイル名を変数で書きこむfwr...
-
VBA テキストボックスを選択状...
-
[コンパイルエラー 修飾子が不...
-
fortranでNAのあるデータを読み...
-
SQLファイルの読み込み
-
複数のファイルをまたぐエクセ...
-
teratermで、ファイル名をinput...
-
VB.netでShellExecuteがしたい
-
VBAで複数のCSVからレコードセ...
-
Fortran:列数の分からないデー...
おすすめ情報