【问题标题】:python TypeError: coercing to Unicode: need string or buffer, NoneType foundpython TypeError:强制转换为Unicode:需要字符串或缓冲区,找到NoneType
【发布时间】:2014-10-06 18:29:47
【问题描述】:

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

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

  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=" 周围,它会给出完全相同的错误,除了它显示带有@987654324 的代码@ 代替。

这是 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 不是很熟悉,所以我可能会做一些非常愚蠢的事情。

【问题讨论】:

  • 如果您尝试打印str(setting['room']),您会得到什么?和time?
  • ,然后是 Traceback,结论为“NameError: name 'settings' is not defined

标签: python unicode


【解决方案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))

【讨论】:

  • “chatkey=settings["chatkey"]" 区域出现错误
  • 奇怪,它应该可以工作。你能在第348行之前打印这些变量settingsxhr_pollingtimeself.username
  • imgur.com/SiR2jn1。由于某种原因,它不会打印变量。另外,在继续之前,我要感谢您的宝贵时间。
猜你喜欢
  • 2014-12-21
  • 1970-01-01
  • 2012-06-06
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 2015-02-01
相关资源
最近更新 更多