这是我在Python 2.7中的机器人代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot
bot = ChatBot('Test')
Conversa =['Oi','Olá','Tudo bem?','Eu estou bem']
bot.set_trainer(ListTrainer)
bot.train(Conversa)
while True:
quest = input('Voce: ')
resposta = bot.get_response(quest)
print ('Bot: ', resposta)
当我运行它时会出现以下错误:
Traceback (most recent call last):
File "file/bot.py", line 15, in <module>
quest = input('Voce: ')
File "<string>", line 1, in <module>
NameError: name 'oi' is not defined
如果我将输入更改为raw_input,它也会出现此错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 18: ordinal not in range(128)
答案 0 :(得分:1)
你有没有使用Python 3的原因?该版本的主要原因之一是彻底消除了所有这些奇怪的问题。
如果您的任何字符串包含不在ASCII代码页中的字符,则需要使用unicode字符串,而不是字节字符串。
在您的情况下,它将如下所示:
Conversa =['Oi',u'Olá','Tudo bem?','Eu estou bem']
虽然是一个更好的解决方案,但如果您绝对肯定在Python 2上启动新项目,请在文件顶部添加from __future__ import unicode_literals
。