好きなものだけ書く。ポジティブに。

好きなことを楽しく。プログラミング、写真、音楽、ガジェットとか。

酸欠少女さユりの新しい曲が出るぞー!(一部出たぞー!)2016年12月7日発売「フラレガイガール」もう予約しましたか!?

来る12月7日に酸欠少女さユりさんの新しいシングルが出ます。 iTunesStoreやAmazonで予約出来ます。僕は両方予約しました。だってCDは保存するんだもの。

もうどの曲を聴いても声が良い。

今回のフラレガイガールはあの「君の名は」の映画音楽を担当しているRADWIMPS野田洋次郎さんが楽曲提供&プロデュースをしているのです!

好きなアーティスト ✕ 好きなアーティスト は 大好きに決まってます。 是非皆様もふるって予約しましょう! (さユりさんはファンクラブにも入ってたりしますw 酸欠少女さユり公式ファンクラブ

1曲はもうPVと一緒に見れます

続きを読む

2016/10/30 神奈川県の大山に登ってきました。岩と石と写真と筋肉痛。

※11/13 画像サイズが大きかったので修正しました

神奈川県の大山という山に登ってきました。 趣味を登山にしようと早半年。

ゆるふわアルピニスト目指して頑張ります。 写真と登山が趣味なのはとてもリンクしていて素敵です。

写真と共に大山を紹介していきましょう!

まずは参道の川から。 大山 - 参道の河 大山 - 参道の川 大山 -

続きを読む

python2系の unicode/str とか encode, decode 関数の魔境

100% プログラムの話しです。

f:id:noblejasper:20161103120644p:plain

python2系の文字列は魔境。 ちょっと整理しようと思います。

str型、unicode

まず、文字列を扱うには2つの型がある。 str型と、unicode型。

基本的にはunicode型を使うようにすると間違いは少なさそう。

個別に調べていってみましょう

続きを読む

python2.7系 csv モジュールでの書き込みは unicode型はNG!

プログラムの話しでっす。

結論

csvモジュールで書き込みする時は、unicode型はダメです。 str型で文字コードUTF-8なもので統一しましょう。

サンプル

# coding=utf-8

import csv

sample_header = [u"col{}".format(i) for i in range(1, 6)]
sample_data = [
  [u"あ", u"い", u"う", u"え", u"お"]
]

with open('/tmp/sample.csv', "wb") as fh:
    writer = csv.writer(fh, lineterminator=u'\n')
    writer.writerow(sample_header)
    for row in sample_data:
        row = [x.encode("utf-8") for x in row]
        writer.writerow(row)

ざっくり解説

元のデータがunicode型で渡ってきて(サンプルの sample_data のように) そのまま書き込もうとすると以下のようなExceptionを吐きます。

Traceback (most recent call last):
  File "sample.py", line 14, in <module>
    writer.writerow(row)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042' in position 0: ordinal not in range(128)
[Finished in 0.264s]

unicodeで渡ってきた時には .encode("utf-8") すれば str型になるので csv モジュールもすんなり飲み込んでくれるようです。