簡體   English   中英

空格字符既是字典中的鍵又是值

[英]Whitespace characters as both a key and a value in a dictionary

我想將整個句子從摩爾斯電碼解碼為普通字母-我的腳本只是這樣做,但它會將所有單詞連接在一起-它不保留空格。 在morseCode(輸入)中,三個空格代表單詞之間的分隔,而一個空格代表字母之間的分隔。

我嘗試將三個空格作為鍵添加到字典中,並具有一個空格的對應值,但是它似乎不起作用。

def decodeMorse(morseCode):
    MORSE_CODE['   '] = ' '
    return ''.join(MORSE_CODE.get(i) for i in morseCode.split())

我也嘗試使用正則表達式分隔輸入,但是失敗了。 有沒有辦法使它使用字典工作? 甚至可以將空格用作字典中的鍵和輸入嗎?

str.split()在任意寬度的空格上分割輸入字符串。 這意味着您只會得到字符串中非空格部分 (空格包含空格)。

您通常會將輸入分割兩次; 一次在字符串' '上獲取單詞列表,然后在空格上的每個單詞僅獲取字母:

def decodeMorse(morseCode):
    return ' '.join([
        ''.join([MORSE_CODE.get(i) for i in word.split()])
        for word in morseCode.split('   ')])

如果要使用方法,則必須使用正則表達式來拆分並包括 3個空格分隔符:

re.split(r'([ ]{3}| )', morseCode)

但隨后您必須過濾掉單空格字母分隔符,因為re.split()可以為整個分割操作而不是單個分隔符標記包括或不包括分隔符。

函數split將三元空格視為單個定界符。 因此,一種選擇是按照@Martijn Pieters的建議,首先在三元空間上進行顯式拆分,或者先用摩爾斯電碼中未出現的其他內容(例如| )替換三元空間,然后將其轉換為空白:

def decodeMorse(morseCode):
    MORSE_CODE['|'] = ' '
    return ''.join(MORSE_CODE.get(i) for i in morseCode.replace('   ', '|').split())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM