python TypeError:强制转换为Unicode:需要字符串或缓冲区,找到NoneType

时间:2014-10-06 18:29:48

标签: python unicode

我一直在尝试使用名为chatbot1.5.2b的python程序。它旨在用于Wikia。但是,在执行完所有步骤后,我在运行启动脚本时遇到此错误:

  
    
      

线程Thread-1中的异常:           回溯(最近一次调用最后一次):

    
  
  File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner
    self.run()
  File "C:\Python27\lib\site-packages\chatbot.py", line 405, in run
    connect = self.c.connection()
  File "C:\Python27\lib\site-packages\chatbot.py", line 361, in connection
    var = self.__connection(self.settings, self.xhr)
  File "C:\Python27\lib\site-packages\chatbot.py", line 348, in __connection
    str(settings['room']) + "&t=" +
TypeError: coercing to Unicode: need string or buffer, NoneType found

我正在使用Python 2.7.8。我在这里已经阅读了几个非常相似的主题的其他问题,但是如果我尝试跟随它们,例如将str()放在"&t="周围,它会给出完全相同的错误,除了它显示了代之以str("&t=")代码。

以下是chatbot.py中第348行附近区域的代码:

data = self.session.get("http://" + settings["host"] + ":" +
                        settings["port"] +
                        "/socket.io/1/xhr-polling/" + xhr_polling
                        + "?name=" + self.username + "&key=" +
                        settings['chatkey'] + "&roomId=" +
                        str(settings['room']) + "&t=" +
                        time)
    content = re.findall(r'.:::(.*)', data.content.decode('utf8'))

任何帮助非常感谢。我对Python不太熟悉,所以我可能会做一些非常愚蠢的事情。

1 个答案:

答案 0 :(得分:1)

您无法将None转换为unicode值。

这是你需要做的事情

在348之前添加此行

room = str(settings['room']) if str(settings['room']) == None else ''

用这个

代替第348行
data = self.session.get("http://{host}:{port}/socket.io/1/xhr-polling/{polling}?name={username}&key={chatkey}&roomId={room}&t={time}".format(host=settings["host"],port=settings["port"],polling=xhr_polling,username=self.username,chatkey=settings["chatkey"],room=room,time=time))