Powershellの正規表現を使ったcsvの整形

ある表データの利用が必要になったのですが、各項目が”[カラム名]=[値]”で表記されており、スペースで区切られているという変わった書式になっていました。

これだけならまだしも、値のないカラムはカラム名ごと省略されており、カラム名とスペースをカンマで置き換えても値がずれるという面倒な書式でした。

ちょうどこんな感じです。

<Powershell>
$str = @(
    "pref=saitama city=saitama ward=urawa machi=kitaurawa",
    "pref=saitama city=kumagaya machi=honcho
"
)

2行目の方にも”ward=”という空の表記があれば列が揃うのですが、このままだとwardの値とmachiの値が混ざってしまいます。

Powershellは正規表現が使えるとのことだったので、勉強がてら変換を試してみることにしました。できあがりはこんな感じです。

<Powershell>
#加工する文字列
$str = @(
    "pref=saitama city=saitama ward=urawa machi=kitaurawa",
    "pref=saitama city=kumagaya machi=honcho"
)

#city=[何とか]の次がmachi=[何とか]だった場合ward=を挿入
$str = $str -replace '(city=[a-z]+) machi=','$1 ward= machi='

#[カラム名]=を削除
$str = $str -replace '[a-z]+=',''

#スペースをカンマに変換
$str = $str -replace '\s',','

#ヘッダ変数
$header = "pref,city,ward,machi"

#ヘッダを配列の先頭に挿入
$str = @($header) + $str

#文字列をcsv出力
$str | Out-File "C:\hoge\hoge.csv" -Encoding UTF8

今回のケースでは一致したcityの値を置き換え後の文字列でも使用したかったのですが、これは正規表現のグループ化という機能で実現可能です。

正規表現の条件指定部分を()でくくっておくと、置き換え後の文字列で$1という名前で参照できます。上の例では配列の2つ目の値でcity=kumagayaという文字列を検索条件に使いつつ、置き換え後文字列で改めて呼び出しています。

出力されたcsvも表計算ソフトでスムーズに読み込めるのでこれで良いかなと思います。

綿内駅(2020年10月)

取り壊しの話を聞いたので、工事が始まる前に綿内駅の様子を見に行ってきました。

まだ仮囲いなどは設置されていませんでしたが、駅舎はちょっとガランとした雰囲気で寂しげでした。

遊歩道の工事予告が出ていました。2021年春頃には綿内駅まで遊歩道ができるようです。

駅駐車場から松代方面を見た様子です。元々綿内駅前には西友があったそうで、この駐車場はその店舗駐車場の名残らしいです。

駅プラットフォームの様子です。せっかくなので遊歩道にもここが駅だったことが分かるような何かが残ると良いと思いますが、どうなるでしょうか。

信濃竹原駅

長野電鉄の信濃竹原駅に立ち寄りました。

信州中野駅から湯田中方面に2つ進んだ駅です。信州中野駅は標高約365mらしいのですが、信濃竹原駅は2駅先というだけにも関わらず標高約470mとのことです。信州中野より先の勾配の厳しさが良く分かります。

駅舎は木造の渋い雰囲気です。屋根から出ている煙突もいい味を出しています。

駅前に公衆トイレはありませんが、自動販売機はあります。立地的にキリのいい場所にあるわけではないですが、一応補給ポイントとして使えそうな感じです。

Insta360 ONE Rのファームウェアアップデート(v1.2.17)

9/30付けでファームウェアバージョン1.2.17がリリースされています。

今回のバージョンは前バージョンの1.2.16のマイナーチェンジ版といった感じで、機能面での更新は外部マイクの録音品質が向上したという1点のみとなっています。

ただし、今バージョンはスマートフォン用の最新版Insta360 app (iOS 1.3.9/ Android 1.3.5)との組み合わせで動作するよう設計されているらしいので、スマートフォン用アプリのバージョンとファームウェアバージョンのマッチングは気にしておいた方が良さそうに思います。

Ryzen 5000シリーズの発表

Zen3コアを採用しているRyzen 5000シリーズが発表されました。11月からさっそく発売になるとのことです。

AMD、Zen 3採用のデスクトップCPU「Ryzen 5000」シリーズ

[PC Watch]

Ryzenも第3世代ということになるわけですが、Instructions Per Clock(クロックあたりの命令実行数)は第2世代Ryzenより19%向上しているとのことです。

公開されているSKUによると各製品のクロックスピードは第2世代Ryzenと大きく変わらないようにも見えますが、上記のIPC向上を踏まえると同クロックでもざっくり2割増し程度の性能と考えても良さそうです。

詳細は10/28のイベントで追って伝えられるとのことなので、そちらも楽しみにしたいと思います。

クェーカーのスチールカットオーツ

よく食べていたボブズレッドミルのスティールカットオーツが、新型コロナウイルスの影響なのか入手しづらくなってしまいました。

スティールカットオーツは少々マイナーな商品なのでもう簡単には食べられないかと思っていたのですが、おなじみクェーカーブランドでスティールカットオーツの取り扱いがあるのを見つけました。

いつもの赤とネイビーではなく、青系のパッケージが新鮮です。原産国はアメリカとのことでした。

見た感じはボブズレッドミルのものとあまり変わらないように見えます。

調理しても同様で、違和感無く食べることができました。
春先からオートミールは急に品薄になることが多く困っていたのですが、大手のクェーカー製が安定供給されるならかなり安心だと思います。

河東線記念公園

長野電鉄須坂駅の東側に、屋代線の跡地を利用した小さい公園があります。河東線記念公園という名前です。

ポイントは線路がそのまま残っているところです。やはりレールや枕木があると雰囲気がだいぶ違います。

手前の国道406号には踏切の面影も感じられます。

少々あっさり目ではありますが、鉄道遺構の残る貴重な公園です。

余った野菜と豚肉の煮物

冷蔵庫に余った野菜が細々と増えてきたので、まとめて煮物にしてしまうことにしました。野菜だけだと寂しいので豚肉と練り物と豆腐を追加して肉どうふ風にしています。

甘辛く煮ると豚肉の脂が一際おいしいです。

味付けは例によって砂糖としょうゆとみりんの3点セットです。この味付けはかなり広い範囲の肉・魚・野菜をカバーできるので便利です。

Radeon Software Adrenalin 2020 Edition 20.9.1をインストール

7月頃にドライバのアップデートをすると再起動から戻ってこなくなるという事象が発生していましたが、改めてドライバのアップデートを試してみました。

現在OSのバージョンはWin10(2004)ですが、それに対して安定版の中で最新となる20.9.1(WQHL)をインストールしてみたところ、問題なくインストールできました。

トラブルが起きた当時私のOSバージョンがWin10(1909)で、それに対してインストールしようとしたドライバ(20.7.1)がWin10(2004)世代のものだったのでうまくインストールできなかったのかもしれません。

OSバージョンとの兼ね合いが原因というのは仮説ですが、今後OSの機能アップデートを遅らせる場合は、VGAドライバのバージョンもあわせて整合性を取るよう注意したいと思います。

豊丘ダムと昇竜湖

須坂市の四阿山方面にある豊丘ダムに行きました。こちらの方面だと県道58号や国道406号がメインルートですが、交通量が多いのであえて裏道っぽい道を通るルートにして見ました。

途中に通る県道349号に蓑堂トンネルというトンネルがあるのですが、トンネルを出た後の下り区間にちょっと景色のいいポイントがあるのでオススメです。

蓑堂トンネルを出た先で林道のようなダムに向かう道に入っていきます。少々狭いですが、基本的にほかの交通と出会わないので比較的落ち着いて走れます。

平均勾配7%弱の坂を4.5km程度登ると豊丘ダムに到着します。

堤高が80m近くある重力式コンクリートダムなので、堤体は結構迫力があります。

ダム湖は昇竜湖という名前で、これは公募によって決まったものだそうです。字面に格ゲー感がありますが、須坂市には臥竜山・臥竜公園という名所があるので、”竜”というキーワードは親しみのあるものなのかもしれません。

ダムサイトには結構様々な施設があるようです。徒歩だと色々と見てまわりやすそうです。

昇竜湖を一周する道路もあるようなのですが、道路周辺の法面が崩落しているとのことで通行止めでした。堤体の上も含めてぐるっと一周できるとまた面白いと思います。

行き止まりなのでどうしても同じルートを行って帰ることにはなってしまいますが、市街地から10km程度で700m近い標高差があり、気軽な登りルートとして結構重宝しそうな感じです。