我正在尝试将用户输入的摩尔斯电码转换回字母,但转换后单词不会分开。他们都加入了。我尝试了不同的连接和拆分方法,但仍然得到相同的结果。
%Run String.py
.... . .-.. .-.. --- .-- --- .-. .-.. -..
Eingabe: H E L L O W O R L D
import re
morse_dict = {
'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': '----.'
}
reverse_morse_dict = {value: key for key, value in morse_dict.items()}
#wandeln zu Morsecode um
'''def Eingabe_zu_morse(eingabe_text):
#enfernt ungewünschte Zeihcnen und wandelt zu große Buchstabe um
filtered = re.sub(r'[^a-zA-Z0-9\söäüÖÄÜß]', '', eingabe_text)
filtered= filtered.upper()
#wandeln zu Morsecode um
morse_code = []
for char in filtered:
if char == ' ':
morse_code.append(' ')
elif char in morse_dict:
morse_code.append(morse_dict[char])
#verbindet Morsecode mit Leerzeichnen
morse_code_str = ' '.join(morse_code).replace(' ', ' ')
return morse_code_str '''
#Wandelt Morse code wieder zu Text
def Morse_zu_text(morse_code):
worten = morse_code.strip().split(' ') # Stellt Wörten mit 3 Leerzeichnen abstand
decoded_text = []
for wort in worten:
characters = wort.split(' ')
decode_wort = ' '.join([reverse_morse_dict[char] for char in characters if char in reverse_morse_dict])
decoded_text.append(decode_wort)
return ' '.join(decoded_text)
eingabe = input()
#enngabe= '-'.join(eingabe)
#filtered = re.sub(r'[^a-zA-Z0-9\söäüÖÄÜß]', '', eingabe)
#filtered= filtered.upper()
#enngabe= '-'.join(filtered)
#morse_output = Eingabe_zu_morse(eingabe)
text_output = Morse_zu_text(eingabe)
#print(f'Eingabe: {morse_output}')
print(f'Eingabe: {text_output}')
您只是用太多空格加入了它们。我相信摩尔斯电码中的“”只是字母的分隔符,所以你必须更改这行代码
for wort in worten:
characters = wort.split(' ')
=> decode_wort = ' '.join([reverse_morse_dict[char] for char in characters if char in reverse_morse_dict])
decoded_text.append(decode_wort)
要像这样:
decode_wort = ''.join([reverse_morse_dict[char] for char in characters if char in reverse_morse_dict])