お前は半角スペースではない

1日1 Python のお時間です。

今回は半角スペースもどきの話をする。たびたび緑さんのテキストファイルに紛れ込み、 Markdown を狂わせてきた悪しきスペースもどき。

x = ' '

この謎のスペースのことをぼくは正体不明のスペースと呼んでいたのだけど、正体がようやく判明した。

 

NBSP だ

これは no-break space あるいは non-breaking space という。略して NBSP。

  •   の html 上での姿
  • 自動折返しが行われないスペース(HTML 上での自動折返しをさせないという意味)

である。 Python で半角スペースとの違いを突き止めるときは次↓の通り。

space = ' '
x = ' '

print(ord(space))  # 32
print(ord(x))  # 160

print(hex(ord(space)))  # 32 -> 0x20
print(hex(ord(x)))  # 160 -> 0xa0

Python で謎の文字の正体を unicode 一覧表から探し出すときは、以下の手順をとる。

  • 上の Python みたいに、 ord で文字のコードポイントを取得する。(NBSP であれば160)
  • その数値を16進数へ変換する。(160であれば 0xa0)
  • Wikipedia の Unicode 一覧を開く。
  • 表の一覧から文字を探し出す。 0xa0 であればこう↓(画像参照)。