Python 类型错误:序列项 0:预期为字符串,找到 NoneType
我从一本书上复制了这段代码:
lyst = {'Hi':'Hello'}
def changeWord(sentence):
def getWord(word):
lyst.get(word, word)
return ''.join(map(getWord, sentence.split()))
但是我遇到了这个错误:
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
cambiaPronome('ciao')
File "C:\Python33\2.py", line 6, in cambiaPronome
return ''.join(map(getWord, list(frase)))
TypeError: sequence item 0: expected str instance, NoneType found
这是什么问题呢?
2 个回答
0
问题在于,你试图把一种叫做 NoneType 的类型写入字符串,这样是不允许的。
如果你想把 None
这些值也包含在内,可以考虑把它们转换成字符串。
你可以用一种叫做列表推导式的方法来实现,比如:
return ''.join([str(x) for x in map(getWord, sentence.split())])
不过在这种情况下,要正确处理,你需要在内部函数中返回一些东西,否则就相当于 return None
。
2
getWord
这个函数没有明确地返回任何东西,所以它默认返回的是None
。你可以试着让它返回一些东西,比如:
def getWord(word):
return lyst.get(word, word)