【Sikuli/Sikulix】カナ・英数字 半角⇔全角変換

システムによっては、入力フィールドに「全角」入力しか受け付けなかったり、「半角」入力しか受け付けなかったりすることがあると思います。

Sikuliで全角への変換や半角への変換を実現しようと思いましたが、エラーになってしまったりとなかなか実現できなかったので、自作してみました。

ここでは、カナ・英数字を半角または全角に変換する関数を自身で作成してSikuliで利用する方法をご紹介します。

 

Sikuli関連記事はこちら

 

スポンサーリンク

 

動作確認用サンプルプログラム

①全角カナ、半角カナ、全角アルファベット、半角アルファベット、全角数字、半角数字を配列で宣言します

   カナについては、濁音(ガ/など)と半濁音(パ/など)が配列内で先に記載されるのがポイントです!

②全角変換関数を定義します。入力された文字列内に半角カナ、半角英数字が含まれていたら全角に変換しています

③半角変換変数を定義します。入力された文字列内に全角カナ、全角英数字が含まれていたら半角に変換しています

④全角にしたい文字列入力を求めるインプットボックスを表示します

  ここでは、半角で「sikuliテスト」と入力しました。取消がクリックされると変換せずプログラムを終了します。

 

⑤半角にしたい文字列入力を求めるインプットボックスを表示します

  ここでは、全角で「シクリTEST2」と入力しました。取消がクリックされると変換せずプログラムを終了します。

 

⑥ ④の入力文字を全角に、⑤の入力文字を半角に変換(定義した関数呼び出し②③)

⑦変換後の結果を表示

 

以上、下記サンプルプログラムです。

Sikuli関連記事はこちら

 

#①全角カナ
zenkaku_kana = [u"ア",u"イ",u"ウ",u"エ",u"オ",
        u"ガ",u"ギ",u"グ",u"ゲ",u"ゴ",
        u"カ",u"キ",u"ク",u"ケ",u"コ",
        u"ザ",u"ジ",u"ズ",u"ゼ",u"ゾ",
        u"サ",u"シ",u"ス",u"セ",u"ソ",
        u"ダ",u"ヂ",u"ヅ",u"デ",u"ド",
        u"タ",u"チ",u"ツ",u"テ",u"ト",
        u"ナ",u"ニ",u"ヌ",u"ネ",u"ノ",
        u"バ",u"ビ",u"ブ",u"ベ",u"ボ",
        u"パ",u"ピ",u"プ",u"ペ",u"ポ",
        u"ハ",u"ヒ",u"フ",u"ヘ",u"ホ",
        u"マ",u"ミ",u"ム",u"メ",u"モ",
        u"ヤ",u"ユ",u"ヨ",
        u"ラ",u"リ",u"ル",u"レ",u"ロ",
        u"ワ",u"ヲ",u"ン",
        u"ァ",u"ィ",u"ゥ",u"ェ",u"ォ",u"ャ",u"ュ",u"ョ",u"ッ"]

#①半角カナ
hankaku_kana = [u"ア",u"イ",u"ウ",u"エ",u"オ",
        u"ガ",u"ギ",u"グ",u"ゲ",u"ゴ",
        u"カ",u"キ",u"ク",u"ケ",u"コ",
        u"ザ",u"ジ",u"ズ",u"ゼ",u"ゾ",
        u"サ",u"シ",u"ス",u"セ",u"ソ",
        u"ダ",u"ヂ",u"ヅ",u"デ",u"ド",
        u"タ",u"チ",u"ツ",u"テ",u"ト",
        u"ナ",u"ニ",u"ヌ",u"ネ",u"ノ",
        u"バ",u"ビ",u"ブ",u"ベ",u"ボ",
        u"パ",u"ピ",u"プ",u"ペ",u"ポ",
        u"ハ",u"ヒ",u"フ",u"ヘ",u"ホ",
        u"マ",u"ミ",u"ム",u"メ",u"モ",
        u"ヤ",u"ユ",u"ヨ",
        u"ラ",u"リ",u"ル",u"レ",u"ロ",
        u"ワ",u"ヲ",u"ン",
        u"ァ",u"ィ",u"ゥ",u"ェ",u"ォ",u"ャ",u"ュ",u"ョ",u"ッ"]

#①全角アルファベット
zenkaku_alpha = [u"A",u"B",u"C",u"D",u"E",u"F",u"G",
        u"H",u"I",u"J",u"K",u"L",u"M",u"N",
        u"O",u"P",u"Q",u"R",u"S",u"T",u"U",
        u"V",u"W",u"X",u"Y",u"Z",
        u"a",u"b",u"c",u"d",u"e",u"f",u"g",
        u"h",u"i",u"j",u"k",u"l",u"m",u"n",
        u"o",u"p",u"q",u"r",u"s",u"t",u"u",
        u"v",u"w",u"x",u"y",u"z"]

#①半角アルファベット
hankaku_alpha = ["A","B","C","D","E","F","G",
        "H","I","J","K","L","M","N",
        "O","P","Q","R","S","T","U",
        "V","W","X","Y","Z",
        "a","b","c","d","e","f","g",
        "h","i","j","k","l","m","n",
        "o","p","q","r","s","t","u",
        "v","w","x","y","z"]

#①全角数字
zenkaku_number = [u"0",u"1",u"2",u"3",u"4",u"5",u"6",u"7",u"8",u"9"]

#①半角数字
hankaku_number = ["0","1","2","3","4","5","6","7","8","9"]
        
        
#②全角変換関数
#---------------------------------------
def zenkaku(moji):
    #半角カナ→全角カナ変換
    for num in range(0, 79):
        if hankaku_kana[num] in moji :
            moji = moji.replace(hankaku_kana[num], zenkaku_kana[num])
    #半角アルファベット→全角アルファベット変換
    for num in range(0, 51):
        if hankaku_alpha[num] in moji :
            moji = moji.replace(hankaku_alpha[num], zenkaku_alpha[num])
    #半角数字→全角数字変換
    for num in range(0, 9):
        if hankaku_number[num] in moji :
            moji = moji.replace(hankaku_number[num], zenkaku_number[num])    
    return moji
#---------------------------------------

#③半角変換関数
#---------------------------------------
def hankaku(moji):
    #全角カナ→半角カナ変換
    for num in range(0, 79):
        if zenkaku_kana[num] in moji :
            moji = moji.replace(zenkaku_kana[num], hankaku_kana[num])
    #全角アルファベット→半角アルファベット変換
    for num in range(0, 51):
        if zenkaku_alpha[num] in moji :
            moji = moji.replace(zenkaku_alpha[num], hankaku_alpha[num])
    #全角カナ→半角カナ変換
    for num in range(0, 9):
        if zenkaku_number[num] in moji :
            moji = moji.replace(zenkaku_number[num], hankaku_number[num])
    return moji
#---------------------------------------


#④全角にしたい文字列入力を求めるインプットボックス表示
input_hankaku_moji = input(u"全角にしたい文字列を入力してください")
if not input_hankaku_moji:
    exit(1)

#⑤半角にしたい文字列入力を求めるインプットボックス表示
input_zenkaku_moji = input(u"半角にしたい文字列を入力してください")
if not input_zenkaku_moji:
    exit(1)

#⑥ ④の入力文字を全角に、⑤の入力文字を半角に変換
zenkaku_moji = zenkaku(input_hankaku_moji)
hankaku_moji = hankaku(input_zenkaku_moji)

#⑦変換後の結果を表示
popup(u"全角にしたい文字列:"+ input_hankaku_moji + u"→変換後全角文字:"+ zenkaku_moji)
popup(u"半角にしたい文字列:"+ input_zenkaku_moji + u"→変換後半角文字:"+ hankaku_moji)
    

 

スポンサーリンク