呃,我有现成的代码,并且我确信它确实有效,但我收到以下错误:
类型错误:描述符“split”需要“str”对象,但收到了
'统一码'
这就是整个定义:
def assemblePacket(self, type):
ipSplit = str.split(self.serverVars[0], '.')
packet = 'SAMP'
packet += chr(int(ipSplit[0]))
packet += chr(int(ipSplit[1]))
packet += chr(int(ipSplit[2]))
packet += chr(int(ipSplit[3]))
packet += chr(self.serverVars[1] & 0xFF)
packet += chr(self.serverVars[1] >> 8 & 0xFF)
packet += type
return packet
问题是这样的:
ipSplit = str.split(self.serverVars[0], '.')
我确信这不是因为代码,我之前已经尝试过(相同的脚本)并且它有效。不知道为什么现在不行了。这个“unicode”让我觉得我必须更改“str.split”,但是嗯。等待意见:)
正如@Abe提到的,这里的问题是,你正在使用字符串分割 http://docs.python.org/2/library/stdtypes.html#str.split分割类型的对象unicode
这是导致失败的原因。
有三种选择供您选择
- 在这种特殊情况下,您可以简单地调用
split()
对象的方法。这将确保无论对象的类型如何(str
, unicode
),方法调用将正确处理它。
- 您也可以致电
unicode.split()
。这对于unicode
字符串但是对于non-unicode
字符串,这将再次失败。
- 最后,您可以导入string http://docs.python.org/2/library/string.html#module-string模块并调用字符串分割 http://docs.python.org/2/library/string.html#string.split功能。该函数将转换为
split()
函数调用到方法调用,从而使您能够透明地调用split()
无论对象类型如何。当您使用split()
作为回调,特别是像这样的函数map()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)