Как распаковать вложенные списки?

a = [a1,a2,a3,a4,a5,a6,a7,a8]
b = [b1,b2,b3,b4,b5,b6,b7,b8]
c = [c1,c2,c3,c4,c5,c6,c7,c8]
d = [d1,d2,d3,d4,d5,d6,d7,d8]

abc = [a, b, c, d]

json_string = json.dumps(abc)
s = socket.socket()
s.connect(('192.168.1.151', 41234))
s.send(json_string.encode())

# receive data from the server
print(s.recv(1024))
time.sleep(0.5)

# close the connection
s.close()

я их принимаю

while True:
    # Establish connection with client.
    connect, addr = s.accept()
    print('Got connection from', addr)
    string_js = connect.recv(1024)
    json.loads(string_js)

    print(string_js)
    print(str(string_js[1]))

в первом случае принт выдает данные, а во втором выходит 91 вне зависимости от данных как мне разбить список на внутренние списки?


Ответы (1 шт):

Автор решения: Алексей Р

Причина засора в строке json.loads(string_js) - это бесполезная строка, результат работы метода никак не используется. А 91 - это ASCII код квадратной скобки, т.е. первого символа строкового представления списка.

import json
import random

a = list(random.sample(range(100),8))
b = list(random.sample(range(100),8))
c = list(random.sample(range(100),8))
d = list(random.sample(range(100),8))

abc = [a, b, c, d]

json_string = json.dumps(abc)
se = json_string.encode()
string_js = se
# string_js = json.loads(se)

print(string_js)
print(str(string_js[1]))
b'[[13, 89, 65, 21, 52, 64, 57, 39], [26, 70, 61, 79, 37, 59, 11, 39], [37, 8, 73, 64, 58, 13, 47, 95], [57, 30, 12, 21, 51, 73, 69, 59]]'
91

Если присвоить результат json.loads(string_js) переменной, то получается как нужно:

import json
import random

a = list(random.sample(range(100),8))
b = list(random.sample(range(100),8))
c = list(random.sample(range(100),8))
d = list(random.sample(range(100),8))

abc = [a, b, c, d]

json_string = json.dumps(abc)
se = json_string.encode()
# string_js = se
string_js = json.loads(se)

print(string_js)
print(str(string_js[1]))
[[98, 80, 89, 96, 93, 31, 36, 15], [35, 21, 44, 80, 33, 23, 38, 65], [88, 0, 97, 65, 92, 84, 72, 99], [57, 17, 78, 64, 94, 18, 81, 40]]
[35, 21, 44, 80, 33, 23, 38, 65]
→ Ссылка