Как превратить строку с числами в массив?

#python #arrays #string #numbers

#python #массивы #строка #числа

Вопрос:

Я хотел бы превратить следующую строку в массив с 3 столбцами и несколькими строками, если это возможно в python. Я пытаюсь превратить следующее в работоспособный набор числовых данных — используя массив, и в настоящее время я не могу понять, как превратить его из строки -> массив. Я вижу, что это почти в том формате, в котором я бы хотел. Есть ли способ превратить все между каждым апострофом (например, ‘-1,38,31857’ в одну строку и ‘-1,40,39304’) в другую строку и скомпилировать все это в массив?

  '-1,38,31857',
 '-1,40,39304',
 '1582871,64,445338',
 '-1,37,29632',
 '-1,1,82',
 '-1,18,3613',
 '-1,6,544',
 '-1,23,7025',
 '-1,34,20775',
 '1979527,23,6361',
 '-1,10,1330',
 '-1,17,3300',
 '-1,11,1426',
 '-1,8,853',
 '-1,24,7087',
 '-1,1,0',
 '-1,1,0',
 '198113,79,1927770',
 '-1,1,0',
 '1763114,1,42',
 '1803615,4,357',
 '-1,1,0',
 '-1,1,0',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1',
 '-1,-1'] ```

 

Комментарии:

1. Каков источник этой строки? похоже, вы просто разделили содержимое некоторого текстового файла по строкам в список. В любом случае вы должны просто проанализировать это с помощью встроенного csv модуля.

2. Кроме того, когда вы говорите «массив», вы имеете в виду список? Подойдет ли просто итератор? или вы имеете в виду массив numpy?

3. Источник строки взят из hiscores игры под названием old school runescape, которая выводится в виде строки, и для обработки требуется преобразование в правильный массив 🙂 Пример ссылки, которая выдает набор данных: services.runescape.com/m=hiscore_oldschool /…

Ответ №1:

Используя понимание списка и split() :

 >>> [[int(n) for n in row.split(",")] for row in strings]
[[-1, 38, 31857], [-1, 40, 39304], [1582871, 64, 445338], [-1, 37, 29632], [-1, 1, 82], [-1, 18, 3613], [-1, 6, 544], [-1, 23, 7025], [-1, 34, 20775], [1979527, 23, 6361], [-1, 10, 1330], [-1, 17, 3300], [-1, 11, 1426], [-1, 8, 853], [-1, 24, 7087], [-1, 1, 0], [-1, 1, 0], [198113, 79, 1927770], [-1, 1, 0], [1763114, 1, 42], [1803615, 4, 357], [-1, 1, 0], [-1, 1, 0], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]]
 

Другой вариант — использовать csv модуль:

 >>> import csv
>>> list(csv.reader(strings, quoting=csv.QUOTE_NONNUMERIC))
[[-1.0, 38.0, 31857.0], [-1.0, 40.0, 39304.0], [1582871.0, 64.0, 445338.0], [-1.0, 37.0, 29632.0], [-1.0, 1.0, 82.0], [-1.0, 18.0, 3613.0], [-1.0, 6.0, 544.0], [-1.0, 23.0, 7025.0], [-1.0, 34.0, 20775.0], [1979527.0, 23.0, 6361.0], [-1.0, 10.0, 1330.0], [-1.0, 17.0, 3300.0], [-1.0, 11.0, 1426.0], [-1.0, 8.0, 853.0], [-1.0, 24.0, 7087.0], [-1.0, 1.0, 0.0], [-1.0, 1.0, 0.0], [198113.0, 79.0, 1927770.0], [-1.0, 1.0, 0.0], [1763114.0, 1.0, 42.0], [1803615.0, 4.0, 357.0], [-1.0, 1.0, 0.0], [-1.0, 1.0, 0.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0], [-1.0, -1.0]]
 

Комментарии:

1. аргумент в кавычках является надежным