как не оканчивать строку на Enter python

У меня есть скрипт, в нём необходимо НЕ прерывать строку по нажатию ENTER. Есть ли возможность, чтобы сообщение отправлялось по нажатию Enter, если строка, в которой пишет человек уже пуста:

Hello,
im sorry but i cant talk right now
[a1]

где a1 - это нажатие Enter на пустой строке. Сейчас Input работает так:

 bod = input("Text:")

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

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

Можно просто запрашивать новые строки, пока не будет пустой, например вот так:

raw_result = []
while i := input():
    raw_result.append(i)

result = '\n'.join(raw_result)

Тот же самый код, только подлиннее и попонятней:

raw_result = []

i = input()
while i:
    raw_result.append(i)
    i = input()

result = '\n'.join(raw_result)

В переменной result оказывается строка вида

'Hello,\nim sorry but i cant talk right now'

PS: \n - перевод строки.

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

Если правильно понял задачу, то Используйте цикл, который будет продолжаться до тех пор, пока строка не будет пустой после нажатия Enter.

   message = ""

while True:
    line = input("Введите текст (нажмите Enter для отправки сообщения): ")
    
    if line:  # Если введенная строка не пустая, добавляем её к сообщению
        message += line + "\n"
    else:  # Если введена пустая строка, ожидаем нажатия Enter для отправки сообщения)
        print(message)
        input("Нажмите Enter для отправки.")
        break  # Выход из цикла
→ Ссылка
Автор решения: wchistow

Ещё один интересный вариант дали в https://stackoverflow.com/a/11664675/21103781 :

result = '\n'.join(iter(input, ''))

Объяснение магии:

Встроенная функция iter может принимать два аргумента: вызываемый объект (например, функцию) и какое-нибудь значение. Тогда она вернёт итератор, построенный из результатов вызовов этой функции, пока он не равен переданному значению. Т. е. как-то так:

def my_iter(f, s):  # имитация `iter`
    r = f()
    while r != s:
        yield r
        r = f()

c = 0
# функция, которая просто возвращает при первом вызове - 1, при втором - 2, и т. д.
def count():
    global c
    c += 1
    return c

>>> print(list(my_iter(count, 5)))
[1, 2, 3, 4]
→ Ссылка