Erm, I have ready-to-use code, and I'm sure it really works, but I get the following error:
TypeError: descriptor 'split' requires a 'str' object but received a 'unicode'
That's the whole def:
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
And here is the problem:
ipSplit = str.split(self.serverVars[0], '.')
I'm sure it's not because of the code, I've tried it before (the same script) and it worked. No idea why it doesn't now.And this "unicode" makes me think I have to change "str.split", but hmmm. Waiting for opinions :)
The problem is that str.split
is a method of the str
class, but is being called for an object of the unicode
class. Call the method directly with ipSplit = self.serverVars[0].split('.')
to have it work for anything (including str
and unicode
) with a split
method.
As @Abe mentioned, the problem here is, you are using str.split to split an object of type unicode
which is causing the failure.
There are three options for you
split()
method for the object. This will ensure that irrespective of the type of the object (str
, unicode
), the method call would handle it properly. unicode.split()
. This will work well for unicode
string but for non-unicode
string, this will fail again.split()
function call to method call thus enabling you to transparently call the split()
irrespective if the object type. This is beneficial when you are using the split()
as callbacks esp to functions like map()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With