Как сохранить вывод на печать с циклом 'for' в качестве переменной массива в Python? - PullRequest
0 голосов
/ 19 октября 2019

У меня есть скрипт побольше, где в конце мне нужно изменить строковую переменную на двоичный код. Это работает, и это печатает двоичный код для данной строки. Я хотел бы сохранить этот двоичный код как переменную, предпочтительнее, например, как массив - один символ на одну позицию. К сожалению, не пришло решение, которое сработало бы. Я проверил несколько потоков о сохранении вывода печати в переменные, но кажется, что с кодом, который у меня ничего нет, работает должным образом.

Код ниже:

import numpy as np

str = "sample"
print(" ".join(f"{ord(i):08b}" for i in str))

Вещи, которые явно не работают:

[1] this = print(" ".join(f"{ord(i):08b}" for i in str))
[2] this = np.array(print(" ".join(f"{ord(i):08b}" for i in str)))

В случае [2] это не дает никакой ошибки, и переменнаясохраняется, но содержимое переменной - «объект ndarray модуля numpy». Когда я хочу открыть его, я вижу сообщение "массивы объектов в настоящее время не поддерживаются".

Есть ли какое-нибудь простое решение для этого?

Спасибо!

1 Ответ

0 голосов
/ 19 октября 2019

print() возвращает None. Поскольку вы не хотите ничего писать в sys.stdout, вы должны удалить это. Примерно так:

this = np.array(' '.join(format(ord(i), 'b') for i in str))

Вы даже можете преобразовать его в bytearray:

this = np.array(' '.join(format(x, 'b') for x in bytearray(st)))

Использование format(...) имеет больше смысла. 'b' для двоичного файла.

Надеюсь, это поможет. Удачи.

...