拆分字符串时是否可以包含空格?

时间:2020-03-22 16:49:37

标签: python string split

(感谢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()函数?

2 个答案:

答案 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)