首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError (不能将NoneType连接到str)

TypeError (不能将NoneType连接到str)
EN

Stack Overflow用户
提问于 2022-06-23 16:41:19
回答 2查看 122关注 0票数 -1
代码语言:javascript
运行
复制
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))

得到这个类型的错误

代码语言:javascript
运行
复制
    output += emoji.get(words)
TypeError: can only concatenate str (not "NoneType") to str
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-23 16:44:35

最快速的解决方法是,当emoji没有匹配的None时,将缺省值更改为空字符串:

代码语言:javascript
运行
复制
output += emoji.get(words, '')

...or,在未找到单词时,将其传递给未修改的单词(但用于前导空间):

代码语言:javascript
运行
复制
output += emoji.get(words, ' ' + words)

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

代码语言:javascript
运行
复制
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))
票数 3
EN

Stack Overflow用户

发布于 2022-06-23 16:44:56

您使用的是dict.get方法和字典中没有的元素。

从python文档:

get

(key[, default])

如果键在字典中,则返回键的值,否则为默认值。如果未给出默认值,则默认为None,因此此方法不会引发KeyError

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72733773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档