みろりHP


緑色さんの多目的ブログ
みろりえいちぴー
ごゆるりとおくつろぎあさーせ。
| カテゴリ:プログラミング |
Python 波ダッシュ問題レポート



「1日1python」の時間です(ただし隔週放送)。みろりhpの記事をpythonで読み込んでいたら、スゲーイヤな問題に咬まれたのでそれについて書く。
なお今回のレポート内容はこのブログだとなんか手に余る感じ。ブログの文字コードがEUC-JPだからだ。今回の内容はUTF-8で書きたいところ。jugemブログは早急に最先端であるUTF-8を導入して頂きたいものだ。これについては随時補足しとく。



マジびっくりなことに、
は違う文字だ。前者は「波ダッシュ(WAVE DASH)」といって、後者が「全角チルダ(FULLWIDTH TILDE)」という。
pythonで下記スクリプトを実行してみればそれがわかる。
wavedash = '〜'        # 前者。波ダッシュ。
fullwidthtilde = '〜'  # 後者。全角チルダ。
print(wavedash == fullwidthtilde)  # Falseになりやがる。ビックリだな。
UTF-8にはどっちの文字も含まれてるんだが、EUC-JPとかSJISには全角チルダのほうが含まれていないらしい。だからこのレポートはUTF-8で書きたかったわけ。
【補足】一応上のスクリプトではエスケープ? がかかってちゃんと二種類表現されているのでコピペしてpython実行してもFalseは得られるみたい。

見分け方はこう。
# b'\xe3\x80\x9c' って出れば波ダッシュ。
print(str(wavedash.encode('utf8')))

# b'\xef\xbd\x9e' って出れば全角チルダ。
print(str(fullwidthtilde.encode('utf8')))

上の見分け方を使って判別関数を作っといたぜ。
def is_WAVEDASH(char):
    return char.encode('utf8') == b'\xe3\x80\x9c'

print(is_WAVEDASH(wavedash))        # Trueになる。
print(is_WAVEDASH(fullwidthtilde))  # Falseになる。


def is_FULLWIDTHTILDE(char):
    return char.encode('utf8') == b'\xef\xbd\x9e'

print(is_FULLWIDTHTILDE(wavedash))        # Falseになる。
print(is_FULLWIDTHTILDE(fullwidthtilde))  # Trueになる。

変換する関数も作ったぜ。てか今回の問題で俺がいちばん必要としたのがこれ。波ダッシュと全角チルダが混在するデータで処理をしようとするとどっかでオカシクなる。文字化けしたり、見た目には同じ文字なのに「違う」って言われたり(冒頭のヤツ)ね。そういう恐れのある文字列は全部以下の関数を通しちまおうぜ。
# 波ダッシュを全角チルダに変換する。reverseにTrue渡せば逆になるよ。
def convert_WAVEDASH_to_FULLWIDTHTILDE(string, reverse=False):
    wavedash = (b'\xe3\x80\x9c').decode('utf-8')
    fullwidthtilde = (b'\xef\xbd\x9e').decode('utf-8')
    if not reverse:
        return string.replace(wavedash, fullwidthtilde)
    else:
        return string.replace(fullwidthtilde, wavedash)



この問題に出会ったのは、みろりhpのデータをxmlエクスポートしたときだ。ナゼかこのブログはEUC-JP(波ダッシュしかないほう)で書かれているのに、出力するとUTF-8(どっちもあるほう)になり、しかももともと含まれていた波ダッシュがすべて全角チルダに置き換わる謎仕様だったんだ。それを処理しようとしたらおかしなことになった。そこでこの調査が必要になったわけ。


| 緑色 | プログラミング | comments(0) |
| カテゴリ:みろりHP |
アコギ 山崎まさよし『One more time, One more chance』



歌はなしのインスト。今月はかなりヘボ。だけれど一月一曲っていうノルマを優先した。

これまでで一番難儀した。左手がむつかしい。半分アルペジオだから押さえの誤魔化しもきかない。歌も試しはしたけれど、とてもそっちの調整まで気が回らなかった。



ままよと公開しちまった今回だけれど、実は思い入れのある曲だ。ギターを選んだ理由である、例のむかし一緒に住んでた子であるが、その子のレパートリーの中で俺が一等気に入っていたのがこの『One more time, One more chance』だったのだよ。曲の練習のため山崎まさよしさんの歌を何度か聴いたけれど、俺はあの子の歌のほうが好き。歌を試したものの結局ヤメてインストにしたのも、いくら歌っても記憶の中のあの歌に近づけなかったからってのがある。
ってそんな思い出の曲をヘボで公開してんじゃねーよ。きっといつかリトライするかもわからない。


| 緑色 | みろりHP | comments(0) |
    123
45678910
11121314151617
18192021222324
252627282930 
<< June 2017 >>
+ みろりHP内検索
+ 閲覧記事
+ 過去記事アーカイブ
+ カテゴリ
+ 年月選択
  • 2017年 06月 (4)
  • 2017年 05月 (7)
  • 2017年 04月 (8)
  • 2017年 03月 (7)
  • 2017年 02月 (10)
  • 2017年 01月 (6)
  • 2016年 12月 (8)
  • 2016年 11月 (8)
  • 2016年 10月 (5)
  • 2016年 09月 (5)
  • 2016年 08月 (7)
  • 2016年 07月 (9)
  • 2016年 06月 (6)
  • 2016年 05月 (8)
  • 2016年 04月 (10)
  • 2016年 03月 (10)
  • 2016年 02月 (8)
  • 2016年 01月 (9)
  • 2015年 12月 (9)
  • 2015年 11月 (6)
  • 2015年 10月 (5)
  • 2015年 09月 (4)
  • 2015年 08月 (8)
  • 2015年 07月 (5)
  • 2015年 06月 (3)
  • 2015年 05月 (7)
  • 2015年 04月 (8)
  • 2015年 03月 (12)
  • 2015年 02月 (8)
  • 2015年 01月 (4)
  • 2014年 12月 (5)
  • 2014年 11月 (5)
  • 2014年 10月 (7)
  • 2014年 09月 (4)
  • 2014年 08月 (7)
  • 2014年 07月 (6)
  • 2014年 06月 (4)
  • 2014年 05月 (12)
  • 2014年 04月 (9)
  • 2014年 03月 (6)
  • 2014年 02月 (6)
  • 2014年 01月 (8)
  • 2013年 12月 (7)
  • 2013年 11月 (10)
  • 2013年 10月 (10)
  • 2013年 09月 (9)
  • 2013年 08月 (11)
  • 2013年 07月 (10)
  • 2013年 06月 (9)
  • 2013年 05月 (15)
  • 2013年 04月 (11)
  • 2013年 03月 (5)
  • 2013年 02月 (7)
  • 2013年 01月 (6)
  • 2012年 12月 (9)
  • 2012年 11月 (10)
  • 2012年 10月 (10)
  • 2012年 09月 (4)
  • 2012年 08月 (2)
  • 2012年 07月 (7)
  • 2012年 06月 (13)
  • 2012年 05月 (13)
  • 2012年 04月 (15)
  • 2012年 03月 (4)
  • 2012年 02月 (12)
  • 2012年 01月 (9)
  • 2011年 12月 (5)
  • 2011年 11月 (13)
  • 2011年 10月 (2)
  • 2011年 09月 (2)
  • 2011年 08月 (1)
  • 2011年 06月 (1)
  • 2011年 05月 (4)
  • 2011年 04月 (10)
  • 2011年 03月 (8)
  • 2011年 02月 (11)
  • 2011年 01月 (14)
  • 2010年 12月 (14)
  • 2010年 11月 (17)
  • 2010年 10月 (17)
  • 2010年 09月 (19)
  • 2010年 08月 (22)
  • 2010年 07月 (18)
  • 2010年 06月 (16)
  • 2010年 05月 (19)
  • 2010年 04月 (15)
  • 2010年 03月 (22)
  • 2010年 02月 (18)
  • 2010年 01月 (18)
  • 2009年 06月 (2)
  • 2009年 04月 (1)
  • 2007年 12月 (10)
  • 2007年 11月 (7)
  • 2007年 10月 (9)
  • 2007年 09月 (4)
  • 2007年 07月 (5)
  • 2007年 06月 (11)
  • 2007年 05月 (6)
  • 2007年 04月 (4)
  • 2006年 01月 (20)
  • + ブックマーク
    + 最近のコメント
    + アクセスカウンター
    全体(since 2010.02.03.)
    今日… 昨日…