2017-01-29 31 views
0

Wikipediaによれば、点字のUnicodeブロックはU + 2800 .. U + 28FFです。Pythonでテキストを点字(Unicode)に変換する

通常のテキストを点字記号(点)に変換しようとしています。そうするために、私はこの文字列をマッピングしている:この特定の文字列が記載されているマッピングの

" A1B'[email protected]/MSP\"E3H9O6R^DJG>NTQ,*5<-U8V.%[$+X!&;:4\\0Z7(_?W]#Y)=" 

理由をon this Wikipedia page

マイコード:私はこのような点字を印刷したい

def toBraille(c): 
unic=2800 
mapping = " A1B'[email protected]/MSP\"E3H9O6R^DJG>NTQ,*5<-U8V.%[$+X!&;:4\\0Z7(_?W]#Y)=" 
i = mapping.index(c.upper()) 
if (i>0): 
    unic+=i 
    unichex = hex(unic) 
    return unichr(unichex)) 
if (i==0): 
    return '_' 
if (i<O): 
    return '?' 

def converter(txt): 
tmp="" 
for x in txt: 
    tmp+=str(toBraille(x)) 
return tmp 

txt = raw_input("Please insert text: \n") 
print(converter(txt)) 

input = hello world 
output = ⠓⠑⠇⠇⠕ ⠺⠕⠗⠇⠙ 

問題は私の出力は次のようになります

内蔵されてのpythonに文字列を再マッピング
Input = A 
Output = 2801 
+0

非常に基本的なのか?何が特別なw.r.tです。あなたの希望する変換?あなたの平均的な同僚がそれを理解すると思いますか? –

+0

私はwikipedia [https://en.wikipedia.org/wiki/Braille_ASCII]で読んだことがあります。このC文字列(PythonやC文字列リテラルを受け入れる他のプログラミング言語でも使用できます)は、点字ASCIIマッピング文字列の先頭にU + 2800から始まるUnicode点字U + 2800〜U + 283Fが順番に並んでいます。 – zerocoldTUN

+1

これはあまり直感的ではありません。あなたのコードを破壊するものは2800です。それは16進数0x2800でなければなりません。混乱を取り除き、普通のPython辞書を書くのはなぜですか? '{'A':u '⠁'、...}'? –

答えて

2

:あなたが2つの引数を渡す場合intabの長さは、outtabの長さと一致しなければならないこと

intab = "helo" # ...add the full alphabet and other characters 
outtab = "⠓⠑⠇⠕" # and the characters you want them translated to 
transtab = str.maketrans(intab, outtab) 

strg = "hello" 
print(strg.translate(transtab)) # ⠓⠑⠇⠇⠕ 

ノート:str.maketransstr.translateで、あなたはこれを行うことができますmaketransのみ(3番目の引数を渡すこともできます。 docを参照してください)。

+0

これはPython 3のみでお願いします。変換テーブルは、Python 2のasciiだけです。 – dawg

0

私は、単純なPythonの辞書を使用し、それが動作しますが、あなたがこの文字列をマッピングしているなぜそれが

# ASCII 
asciicodes = [' ','!','"','#','$','%','&','','(',')','*','+',',','-','.','/', 
      '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@', 
      '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','[','\\',']','^','_'] 

# Braille symbols 
brailles = ['⠀','⠮','⠐','⠼','⠫','⠩','⠯','⠄','⠷','⠾','⠡','⠬','⠠','⠤','⠨','⠌','⠴','⠂','⠆','⠒','⠲','⠢', 
     '⠖','⠶','⠦','⠔','⠱','⠰','⠣','⠿','⠜','⠹','⠈','⠁','⠃','⠉','⠙','⠑','⠋','⠛','⠓','⠊','⠚','⠅', 
     '⠇','⠍','⠝','⠕','⠏','⠟','⠗','⠎','⠞','⠥','⠧','⠺','⠭','⠽','⠵','⠪','⠳','⠻','⠘','⠸'] 
+0

これは、2つの配列ではなく、辞書として定義する必要があります。現在のバージョンは維持できません。 –

関連する問題