はじめに
文字を扱っていると数字を全角や半角にしたいときがよくあります。
全角や半角に変換するライブラリーがありますが、インストールして使用するまでのことでも無いと毎回思っていました。
なので、translateでの変換方法をこの記事に簡単に書いておきます。
コード全体
import pandas as pd
hankaku_table = str.maketrans({
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'0': '0',
})
zenkaku_table = str.maketrans({
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'0': '0',
})
# テスト用文章
word = "1122"
# テストの実行
hankaku_result = word.translate(zenkaku_table)
zenkaku_result = word.translate(hankaku_table)
簡単な説明
変換テーブル作成
変換用のテーブルを作成します。
左の文字から右の文字に変換されます。
hankaku_table = str.maketrans({
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'0': '0',
})
zenkaku_table = str.maketrans({
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'0': '0',
})
変換
この行で変換を行っています。
hankaku_result = word.translate(zenkaku_table)
zenkaku_result = word.translate(hankaku_table)
おまけ
句読点の変換とデータフレームでの使用法を載せておきます。
句読点の変換
数字を句読点に変更することで対応させています。
hankaku_mark_table = str.maketrans({
'。': '.',
'、': ',',
})
zenkaku_mark_table = str.maketrans({
'.': '。',
',': '、',
})
hankaku_mark_result = word.translate(hankaku_mark_table)
zenkaku_mark_result = word.translate(zenkaku_mark_table)
データフレームの変換
データフレームにはlambdaを使用して変換させています。
df = pd.DataFrame({'A': ['11', '21', '31', '11', '11'],
'B': ['12', '22', '32', '45', '85']})
df["C"] = df["A"].apply(lambda x: x.translate(zenkaku_table))
df["D"] = df["A"].apply(lambda x: x.translate(hankaku_table))