TypeError (无法将 NoneType 连接到 str)


def emoji_convert(massage):
split_words = massage.split(" ")
emoji = {
":)": " 😁",
":(": " 😞",
":": " 😶",
":|": " 😐"
}
output = ""
for words in split_words:
output += emoji.get(words)
return output

massage=(input("> "))
print(emoji_convert(massage))

get this type error

output += emoji.get(words)
TypeError: can only concatenate str (not "NoneType") to str

最快的修复方法是在emojiNone没有匹配时将默认值更改为空字符串:

output += emoji.get(words, '')

…或者,当没有找到该单词时,不加修改地传递该单词(除了前导空格):

output += emoji.get(words, ' ' + words)

您还可以考虑将输出生成为列表,并在返回之前将该列表转换为字符串,从而更正确地镜像您之前所做的split()

def emoji_convert(message):
split_words = message.split(" ")
emoji = {
":)": "😁",
":(": "😞",
":":  "😶",
":|": "😐",
}
output = []
for word in split_words:
output.append(emoji.get(word), word)
return ' '.join(output)
message = input("> ")
print(emoji_convert(message))

您正在使用dict.get方法与不在字典中的元素。

从python文档:

get (key[, default])
如果key在字典中,则返回key的值,否则default。如果default未指定,则默认为None,因此此方法永远不会引发KeyError

如果您使用emoji[word],这将引发KeyError。相反,emoji.get(word)返回默认,即None

因此,要么提供一个可以添加到现有字符串的默认字符串,要么以其他方式处理无效输入。

最新更新