Split на запятой (используя b'..'
байты строковых литералов), а затем использовать int()
для преобразования целых чисел, используя списочные, чтобы обработать все строки и значение в каждой строке:
[[int(num) for num in value.split(b',')] for value in yourlist if value]
if value
фильтра пропускает пустые строки ,
Это производит вложенные списки; один за байтовую строку:
>>> yourlist = [b'688284,332,2830336', b'661114,40,37229', b'978148,1,81', b'262250,69,736665', b'269715,68,605568', b'171278,73,1026179', b'1249503,1,15', b'246783,64,424574', b'-1,1,0', b'1826857,1,25', b'1515172,1,0', b'-1,1,0', b'-1,1,0', b'1655032,1,0', b'-1,1,0', b'-1,1,0', b'1453895,1,0', b'1520874,1,0', b'1561752,1,0', b'1508907,1,0', b'1416987,1,0', b'1437689,1,0', b'1421569,1,0', b'1391397,1,0', b'-1,-1', b'-1,-1', b'-1,-1', b'']
>>> [[int(num) for num in value.split(b',')] for value in yourlist if value]
[[688284, 332, 2830336], [661114, 40, 37229], [978148, 1, 81], [262250, 69, 736665], [269715, 68, 605568], [171278, 73, 1026179], [1249503, 1, 15], [246783, 64, 424574], [-1, 1, 0], [1826857, 1, 25], [1515172, 1, 0], [-1, 1, 0], [-1, 1, 0], [1655032, 1, 0], [-1, 1, 0], [-1, 1, 0], [1453895, 1, 0], [1520874, 1, 0], [1561752, 1, 0], [1508907, 1, 0], [1416987, 1, 0], [1437689, 1, 0], [1421569, 1, 0], [1391397, 1, 0], [-1, -1], [-1, -1], [-1, -1]]
Если вы хотите плоского списка, используйте только один список понимание, сочетающую в себе петлю:
[int(num) for value in yourlist if value for num in value.split(b',')]
Однако, это звучит, как вы действительно разбор значения CSV здесь, из веб-URL. Расшифровать данные в текст и кормить его csv.reader()
объекта для обработки расщеплению:
import io
import csv
response = urllib.request.urlopen(url)
codec = response.info().get_param('charset', 'latin1')
reader = csv.reader(io.TextIOWrapper(response, encoding=codec))
for row in reader:
row = [int(col) for col in row]
# do something with each row
или прочитать ответ на одном дыхании (urllib.request
библиотеки, кажется, бросить в больших задержках при использовании ничего, кроме прямой вверх .read()
вызова для вашего образца URL):
response = urllib.request.urlopen(url)
codec = response.info().get_param('charset', 'latin1')
data = response.read().decode(codec)
reader = csv.reader(data.splitlines())
for row in reader:
row = [int(col) for col in row]
# do something with each row
в get_param()
вызове запросы, если сервер сказал нам, какой кодек использовать для декодирования ответа, отступая к ISO-8859-1 (Latin-1) в качестве значения по умолчанию для HTTP-ответы.
Возможный дубликат [разделение элементов списка на python] (http://stackoverflow.com/questions/6696027/split-elements-of-a-list-in-python) – Kasramvd
Разделить элементы. – Zhendos