(感谢CoryKramer的代码对帖子的查询:morse code to english python3)
我正在编写一个莫尔斯电码程序。它适用于从字符串到单词。当将莫尔斯电文转换为字符串时,它会正确地翻译莫尔斯电文,但会忽略空白,这是我输出所需的。
这是我的代码:
def coder(text, to_morse=True):
morse_key = {'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': '--..',
'0': '-----', '1': '.----', '2': '..---',
'3': '...--', '4': '....-', '5': '.....',
'6': '-....', '7': '--...', '8': '---..',
'9': '----.', ' ': ' '
}
key_reversed = {value: key for key, value in morse_key.items()}
if to_morse:
return ' '.join(morse_key.get(i.upper()) for i in text)
else:
x = ''.join([key_reversed.get(i) for i in text.split() for i in (i, ' ')][:-1])
return str(x)
例如,如果我这样做:
coder('-.. .- - .- ... -.-. .. . -. -.-. .', False)
它输出:
'D A T A S C I E N C E'
但是,我想要的输出是:
'DATA SCIENCE'
在包含空格的情况下,如何实现split()
函数?
答案 0 :(得分:2)
将else
下的部分更改为:
text = text.replace(' ', ',').replace(',,,', ', ,')
return ''.join(key_reversed.get(i) for i in text.split(','))
答案 1 :(得分:0)
在您的else块中使用此
else:
words = text.split(' ') # split on 3 spaces
x =[]
for word in words:
x.append(''.join([key_reversed.get(i) for i in word.split()]))
return ' '.join(x)