動作検証バージョン: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)))
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
[スポンサードリンク]