あるデータセットで、文字情報がJIS X 0208のコードで与えられていたのだが、使い勝手がよくないのでUnicode値に変換しようとした。
やり方
Unicodeコンソーシアムが、JIS X 0208のコードからUnicode値へ変換する変換表を公開している。
今回はこれを使う。ただし、この変換表はobsoleteとなっているので、代りにUnihan Databaseを利用した方が良いのかもしれない。
JIS0208.TXTに曰く、対応表のフォーマットは
# Format: Four tab-separated columns # Column #1 is the shift-JIS code (in hex) # Column #2 is the JIS X 0208 code (in hex as 0xXXXX) # Column #3 is the Unicode (in hex as 0xXXXX) # Column #4 the Unicode name (follows a comment sign, '#')
となっているようで、#で始まっている行はコメントとなっているようだ。
コード
"JIS0208.TXT"と同じディレクトリで実行する。
# coding: utf-8 shift_jis = [] jisx0208 = [] unicode = [] with open("JIS0208.TXT", "r") as f: for line in f: if line[0] == "#": pass else: sjis, jisx, unic, _ = line.strip().split("\t") shift_jis.append(int(sjis,16)) jisx0208.append( int(jisx,16)) unicode.append( int(unic,16)) def jis2uni(n): return unicode[jisx0208.index(n)] if __name__ == '__main__': print("{:x}".format(jis2uni(0x2422)))
jis2uni()関数にJIX X 0208のコードを与えると対応するUnicode値が返ってくるというもの。なおPython 3系なら、Unicode値をchr()で文字(列)に変換できる。