Записать в переменную значение из строки вывода python

Допустим у меня есть список

a = ['d', 3, 'w', 24]

Если я хочу вывести этот список на экран (в строку вывода), я пишу print(a) (логично)

Возможно ли мне записать в переменную _a тот текст, который выводится на экран, когда я пишу print(a)?


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

Автор решения: MBo

Просто сделайте преобразование в строку

a = ['d', 3, 'w', 24]
s = str(a)
print(a)
print(s)
→ Ссылка
Автор решения: MarianD
import io

output = io.StringIO()       # создание «файла» в памяти
print(a, file=output)
a_ = output.getvalue()       # получение содержания файла после вызова print()
output.close()

(В переменной а_ будет строка "['d', 3, 'w', 24]\n")


Обьяснение:

В вызове функции print() я добавил параметр file=output, чтобы вывод был не на экран, а в файл. Затем в переменную а_ я присвоил содержание этого файла.

Но не нужно было применить реальный файл, а только симуляцию файла в памяти с использованием модуля io.


Примечание:

То самое с применением контекстного менеджера (спасибо CrazyElf за полезный комментарий):

import io

with io.StringIO() as output:
    print(a, file=output)
    a_ = output.getvalue()
→ Ссылка
Автор решения: MarianD
a_ = str(a)           # в переменной а_ будет строка "['d', 3, 'w', 24]"

Этот подход к решению вашей проблемы возможно благодаря тому, что вызов функции print(arg) на самом деле сначала применит на аргумент arg функцию str(), и только после этого выведет на экран результат этого применения с переходом на новую строку.

→ Ссылка
Автор решения: Dmitry

Немного передалал код от @MarianD, чтобы убрать лишнее

import io

a = ['d', 3, 'w', 24]

with io.StringIO() as buffer:
    print(*a, file=buffer)
    a_ = buffer.getvalue().strip()

print(a_)

Вывод

d 3 w 24

Здесь остаются только значения без "лишних" символов, что может не соответствовать пожеланиям, но как вариант оставлю

→ Ссылка