PowerShellでCSVを読み取るとき

 PowerShellでCSVを読み取るときの注意点は2つです。
 (ハマってしまいました)
 
 先に結論。
 
 ・PowerShellのCSV読み取りは、「Get-Content sample.csv | ConvertFrom-Csv」を用いる。
 ・CSVのヘッダー情報はCSVファイル1行目に書くか、ConvertFrom-Csvの-Headerで指定する。

 
 以下、詳細です。
 PowerShellでは、
 
 Import-Csv sample.csv
 
 というふうにImport-Csvコマンドレットを使うだけでCSVファイルを読み取ることができます。いや違った。読み取ることができるように見えます
 しかし、2つのトラップがあります。
 
 1.CSVファイルのヘッダー
 
 プログラミングをしていて、以下のようなエラーに悩まされました。
 
 PS C:\Users\USER> Import-Csv sample.csv
 Import-Csv : 引数 “name” の値が無効なため、引数を処理できません。引数 “name” の値を変更し、操作を実行し直してください。

 よくわからないエラーですよね。調べたところ、Import-Csvは-Headerオプションをつけないと、CSVファイルの1行目をヘッダーとして理解するということがわかりました。sample.csvは以下のようなファイルだったのです。
 
 1000,
 2000,あいう
 3000,
 4000,えお

 
 PowerShellは1行目をヘッダーとして理解しますが、ヌル値があります。ヌルはヘッダー情報としては無効となるので、エラーになってしまうのです。
 
 Import-Csv sample.csv -Header “ID”,”Name”
 
 というようにヘッダーを指定する。あるいは、
 
 ID,Name
 1000,
 2000,あいう
 3000,
 4000,えお

 
 というようにCSVファイル1行目にヘッダーを書けばOKです。
 
 2.文字コード
 
 CSVを表示させようとして、
 
 Import-Csv sample.csv -Header “ID”,”Name”
 
 として実行すると、文字化けします。
 
 ID Name
 – —-
 1000
 2000 ������
 3000
 4000 ����

 
 Unicodeにしなければならないそうです。しかし、Import-Csvには-Encodingが無い(おいおい)。そこで、
 
 Get-Content sample.csv > sample2.csv
 
 とするとsample2.csvはUnicodeになるので、これを読み取って処理していたのですが、うーん微妙。
 調べたところ、Get-Contentを使うべきらしい。
 
 Get-Content sample.csv | ConvertFrom-Csv -Header “ID”,”Name”
 
 ID Name
 – —-
 1000
 2000 あいう
 3000
 4000 えお

 
 ふむふむ。これでいいね。
 
 おまけ。1のCSVファイルのヘッダーについてですが、ConvertFrom-Csvは動きが異なります。エラーにならず、ヌルがある列がデータとして認識されなくなります。
 
 Get-Content sample.csv | ConvertFrom-Csv 
 
 1000
 —-
 2000
 3000
 4000

 
 となります。1行目の「1000,」がヘッダーとして認識され、ヘッダーのうちの「1000」の列のみが読み込まれます。
 
 わかりにくいなー。
 PowerShellのわかりにくさは今に始まったことではないけど。

Continue reading “PowerShellでCSVを読み取るとき”

伊豆ヶ岳~浅見茶屋のうどんを食べに~

 伊豆ヶ岳に登ってきました。2013/12/1(Sun)のことであります。
 奥多摩の山々には結構登りましたので、奥武蔵・秩父エリアも攻めてみることにしました。
 
 正丸駅から吾野駅までのコース。駅から駅へのコースは楽でいいですね。
 
 20131201_伊豆ヶ岳
 
 20131201_伊豆ヶ岳
 
 ↓続き読んでね。

Continue reading “伊豆ヶ岳~浅見茶屋のうどんを食べに~”

足の幅が広い人のための登山靴(シリオ(SIRIO))

 少し前に買ったモンベルのシューズが結局のところ合わず、足の親指付け根と小指付け根が痛くなります。買い替えを決意し、御茶ノ水の山ショップへゴー。
 
 始めにエルブレスを訪れる。
 足が痛くなることを説明してオススメを選んでもらったところ、SIRIO(シリオ)社の製品が合うだろうとのこと。早速合わせてみたのですが、やや幅が狭い。試し履きしたのはSIRIO(シリオ) P.F.421-GTXというもの。422というタイプだとワイズが4E+になるので、合うのではないか。近くのアウトドアプラザというお店に置いてあるから行ってみると良いと言われました。自分の店じゃない他の店を勧めるって、本当にお客のことを考えているなあと思います。いい店員さんでした。
 
 アウトドアプラザに行ってSIRIO(シリオ) P.F.422-GTXを試し履きします。うーん、いい。幅があるから、店頭の模擬坂を下り降りても痛みが全くありません。いいですねー。店員さんとお話したところ、先ほどのエルブレスの店員さんとは知り合いらしい。なるほど。横のつながりでしたか。
 
 
 
 この靴で山を登りましたが、足の指付け根の痛みはありません。非常に快適です。
 ・・・が、登りで踵が擦れるようになりました。うーん、完璧にマッチする靴というのは無いのかもしれませんね。踵擦れは何かの対策を講じることにしよう。

Continue reading “足の幅が広い人のための登山靴(シリオ(SIRIO))”