I receive from a server this answer
a =b'[10,20]'
- How to sum values?
- If I use
sum(a)
I get 423. Why?
CodePudding user response:
b'[10,20]'
is a bytes
object. Unlike an str
(unicode in Python 2), it expands into a list of integers 0..255:
>>> list(b'[10,20]')
[91, 49, 48, 44, 50, 48, 93]
Perhaps what you want to do is to parst the json and then get a sum of the resulting list:
>>> import json
>>> sum(json.loads(b'[10,20]'))
30
CodePudding user response:
A bytes
value is a sequence of integers; for display purposes, ASCII characters are used where possible.
>>> list(b'[10,20]')
[91, 49, 48, 44, 50, 48, 93]
>>> sum(_)
423
You want to decode the bytes
value to a str
, then parse that as a list of int
values.
>>> import ast
>>> sum(ast.literal_eval(b'[10,20]'.decode()))
30
CodePudding user response:
To sum the list a
you can use the json
package for python and just convert to a list.
There are some simple ways to accomplish that:
>>> import json
>>> json.loads(a)
[10,20]
>>> sum(json.loads(a))
30
The sum results in 423 because a
it's a bytes
object, a sequence of ints that gives an ascii-rapresentation when displayed using repr()
or str()
take a look at this:
>>> a = b'[1,2,3]'
>>> list(a)
[91, 49, 44, 50, 44, 51, 93]
As you can see it's a sequence of integers and not a sequence of characters, like a string.