2016-05-29 19 views
3

私はこれをもっと難しいものにしようとしてきましたが、この目標を達成する方法を見つけることができませんでした。文字列内の各単語の間にスペースを入れてください

def translate_morse(string): 
    morse_a = { 
    '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':'--..',1:'.----',2:'..---',3:'...--',4:'....-',5:'.....',6:'-....',7:'--...',8:'---..',9:'----.',0:'-----'} 
    translated = "" 
    for i in string.split(' '): 
     for key, value in morse_a.iteritems(): 
      if i == value: 
       translated += key 
    print translated 

print """ 

    ################################### 
    #         # 
    # Morse Alphabet Translator  # 
    # Author: Blackwolf    # 
    # Date: 2016-29-05    # 
    #         # 
    ################################### 
    #         # 
    #    USAGE:    # 
    # After each morse letter you # 
    # will need to seperate (space) # 
    # each letter     # 
    ################################### 

""" 
finished = False 
while finished != True: 
    translate_morse(raw_input("Enter morse: ")) 
    ask_ifFinished = raw_input('Are you done? (Y/N): ').lower() 
    if ask_ifFinished == 'y': 
     finished = True 
+1

辞書を正しく使用してください!キーと値を入れ替えて、ループの代わりに通常の辞書検索を行います。また、それらの数字は、文字列に追加する場合は文字列でなければなりません。 –

答えて

3

あなたは、すべて大文字の前にスペースを挿入したい場合は::

import re 
string = 'betweenThemLikeThisJustInASingleString' 
print(re.sub('([A-Z])', r' \1', string)) 

は出力:

その可能なのであれば、私はここに私のコードですにスペース betweenThemLikeThisJustInASingleString を持っていない単語を分離することだろう
between Them Like This Just In A Single String 

境界がマークされていない単語を分割するための完璧なソリューションはありません。コンピュータがsinglestringsingle stringに分割し、sing lest ringに分割しないようにするにはどうすればよいですか(ご存じない場合はlestは英語です)。適切な推測をするために適用できるヒューリスティックはありますが、複雑で制限されています。あなたはすべての可能な解決策を列挙することもできますが、それもあなたのレベルでは難しいでしょう。 stackoverflowの上

+0

そのすべてが小文字であれば? –

+0

それは私がそれをする方法です。しかし、彼のモールスのアルファベットを考慮すると、あなたはそれらの「lower」ケースバリアントによって首都を置き換えるかもしれない。また、最初のスペースはあまりいいものではありません;-) – schwobaseggl

+1

あなたが使用している言語の単語のリストのメンバシップをチェックすることができます(http://www-01.sil.org/linguistics/wordlists/english/ wordlist/wordsEn.txt)しかし、それは不完全であいまいです。 – JETM

4

最初の投稿:)

は何か他のもののために、この問題を解決する方法を見て、私はそれを共有したいと考え出しました。

要件

  • 文字列の各大文字の前にスペースを入れてください。
  • はここに再 "
def spacer(str): 

    sentence = []     # create empty list 

    sentence.append(str[0])  # put first letter in list. First letter doesn't need a space. 
    for char in str[1::]:   # begin iteration after first letter 
     if char.islower(): 
      sentence.append(char) # if character is lower add to list 
     elif char.isupper(): 
      sentence.append(" ") # if character is upper add a space to list 
      sentence.append(char) # then add the upper case character to list 
    result = ''.join(sentence) # use() join to convert the list to a string 
    return result     # return end result 

RUN IT

string='betweenThemLikeThisJustInASingleString' 
spacer(string) 

OUTPUTただ一つの文字列には、このようにそれらの間の「

を使用せずに実装します
関連する問題