空白字符作为字典中的键和值
Whitespace characters as both a key and a value in a dictionary
我想将整个句子从摩尔斯电码解码为普通字母 - 我的脚本就是这样做的,但它连接了所有单词 - 它不保留 spaces。在 morseCode(输入)中,三个 space 表示单词之间的分隔,而一个 space 表示字母之间的分隔。
我尝试在字典中添加三个 space 作为键,相应的值是一个 space,但它似乎不起作用。
def decodeMorse(morseCode):
MORSE_CODE[' '] = ' '
return ''.join(MORSE_CODE.get(i) for i in morseCode.split())
我也尝试过使用正则表达式来分隔输入,但我失败了。有没有办法使用字典使其工作?甚至可以使用 whitespaces 作为字典中的键和输入吗?
str.split()
在任意宽度的白色 space 上拆分输入字符串。这意味着您只能得到字符串中 not whitespace 的那些部分(其中 whitespace 包含 spaces)。
您通常会将输入拆分两次;一旦在字符串 ' '
上得到一个单词列表,然后在 whitespace 上的每个单词只得到字母:
def decodeMorse(morseCode):
return ' '.join([
''.join([MORSE_CODE.get(i) for i in word.split()])
for word in morseCode.split(' ')])
如果你想使用你的方法,你必须使用正则表达式来拆分 并包含 3-space 分隔符:
re.split(r'([ ]{3}| )', morseCode)
但是你必须过滤掉单个 space 字母分隔符,因为 re.split()
可以包含或不包含整个拆分操作的分隔符,而不是单个分隔符标记.
函数split
会将三重白色space视为单个分隔符。因此,一种选择是首先明确地拆分三元组 space,正如@Martijn Pieters 所建议的那样,或者首先将三元组 space 替换为摩尔斯电码中没有出现的其他内容(例如,可能 |
) 然后将其翻译成白色space:
def decodeMorse(morseCode):
MORSE_CODE['|'] = ' '
return ''.join(MORSE_CODE.get(i) for i in morseCode.replace(' ', '|').split())
我想将整个句子从摩尔斯电码解码为普通字母 - 我的脚本就是这样做的,但它连接了所有单词 - 它不保留 spaces。在 morseCode(输入)中,三个 space 表示单词之间的分隔,而一个 space 表示字母之间的分隔。
我尝试在字典中添加三个 space 作为键,相应的值是一个 space,但它似乎不起作用。
def decodeMorse(morseCode):
MORSE_CODE[' '] = ' '
return ''.join(MORSE_CODE.get(i) for i in morseCode.split())
我也尝试过使用正则表达式来分隔输入,但我失败了。有没有办法使用字典使其工作?甚至可以使用 whitespaces 作为字典中的键和输入吗?
str.split()
在任意宽度的白色 space 上拆分输入字符串。这意味着您只能得到字符串中 not whitespace 的那些部分(其中 whitespace 包含 spaces)。
您通常会将输入拆分两次;一旦在字符串 ' '
上得到一个单词列表,然后在 whitespace 上的每个单词只得到字母:
def decodeMorse(morseCode):
return ' '.join([
''.join([MORSE_CODE.get(i) for i in word.split()])
for word in morseCode.split(' ')])
如果你想使用你的方法,你必须使用正则表达式来拆分 并包含 3-space 分隔符:
re.split(r'([ ]{3}| )', morseCode)
但是你必须过滤掉单个 space 字母分隔符,因为 re.split()
可以包含或不包含整个拆分操作的分隔符,而不是单个分隔符标记.
函数split
会将三重白色space视为单个分隔符。因此,一种选择是首先明确地拆分三元组 space,正如@Martijn Pieters 所建议的那样,或者首先将三元组 space 替换为摩尔斯电码中没有出现的其他内容(例如,可能 |
) 然后将其翻译成白色space:
def decodeMorse(morseCode):
MORSE_CODE['|'] = ' '
return ''.join(MORSE_CODE.get(i) for i in morseCode.replace(' ', '|').split())