Home » Python » PythonでUnicodeコードポイント・文字コード番号を

PythonでUnicodeコードポイント・文字コード番号を

動作検証バージョン:Windows 10 + Python 3.7.3

文字列のUnicode文字コード番号・コードポイントを取得するExcel VBAのSubプロシージャをご紹介しました。

Pythonならば、もっとシンプルなコードで済むだろうと感じ、試しにスクリプトを書いてみました。

[スポンサードリンク]

Unicodeコードポイントを出力するPythonのスクリプト

Pythonの場合ord関数でUnicodeコードポイントを取得できるので、以下のようなスクリプトで、文字列に含まれる各文字のUnicode文字コード番号を出力できます。

txt = input('文字列を入力してください:')
for i in txt:
    print(i, ord(i), hex(ord(i)))

上記のスクリプトをインタラクティブシェルで実行すると、
  文字列を入力してください:
と表示されます。

例えば「いろは」と入力すると、
文字・10進表記の文字コード番号・16進表記の文字コード番号が、
  い 12356 0x3044
  ろ 12429 0x308d
  は 12399 0x306f
と出力されます。

Unicodeコードポイントを出力するVBAのプロシージャ

ちなみにVBAで、インプットボックスから文字列を入力してもらって、文字・10進表記の文字コード番号・16進表記の文字コード番号をイミディエイトウィンドウに出力するSubプロシージャなら以下のとおりです。

 Sub samle()
  Dim txt As String
  txt = InputBox("文字列を入力してください:")
  Dim i As Long, c As String
  For i = 1 To Len(txt)
   c = Mid(txt, i, 1)
   Debug.Print c; AscW(c); Hex(AscW(c))
  Next i
 End Sub

Option Explicitを削除して変数宣言行をなくしたとしても、以下のとおりです。

 Sub samle()
  txt = InputBox("文字列を入力してください:")
  For i = 1 To Len(txt)
   c = Mid(txt, i, 1)
   Debug.Print c; AscW(c); Hex(AscW(c))
  Next i
 End Sub

PythonとVBAの違い

Pythonの場合、VBAのFor Each~Next文に該当するfor文で、文字列の個々の文字を取得できるので、

  for i in txt:
      print(i, ord(i), hex(ord(i)))

の2行だけで済んでしまいます。

これに対しVBAの場合はFor~Next文の中でMid関数を使って1文字ずつ取得する処理が必要なのと、Nextの行が必要なため

  For i = 1 To Len(txt)
   c = Mid(txt, i, 1)
   Debug.Print c; AscW(c); Hex(AscW(c))
  Next i

と4行必要になってしまいます。

最終更新日時:2020-11-05 12:17

[スポンサードリンク]

Home » Python » PythonでUnicodeコードポイント・文字コード番号を

「Python」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.