python - удалить - Как печатать без новой строки или пробела?




строки python (18)

Общий путь

import sys
sys.stdout.write('.')

Вам также может потребоваться позвонить

sys.stdout.flush()

для обеспечения немедленного stdout .

Python 2.6+

Из Python 2.6 вы можете импортировать функцию print из Python 3:

from __future__ import print_function

Это позволяет вам использовать решение Python 3 ниже.

Python 3

В Python 3 оператор print был изменен на функцию. В Python 3 вы можете:

print('.', end='')

Это также работает в Python 2, при условии, что вы использовали from __future__ import print_function .

Если у вас возникли проблемы с буферизацией, вы можете очистить вывод, добавив аргумент flush=True :

print('.', end='', flush=True)

Однако обратите внимание, что ключевое слово flush недоступно в версии функции print импортированной из __future__ в Python 2; он работает только в Python 3, более конкретно, 3.3 и более поздних. В более ранних версиях вам все равно нужно выполнить ручную sys.stdout.flush() с вызовом sys.stdout.flush() .

Вопрос находится в названии.

Я хотел бы сделать это на python . Что я хотел бы сделать в этом примере в c :

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

Выход:

..........

В Python:

>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

В Python print добавит \n или пробел, как я могу избежать этого? Теперь это просто пример. Не говорите мне, что я могу сначала построить строку, а затем распечатать ее. Я хотел бы знать, как «добавить» строки в stdout .


... вам не нужно импортировать какую-либо библиотеку. Просто используйте символ delete:

BS=u'\0008' # the unicode for "delete" character
for i in range(10):print(BS+"."),

это удаляет новую строку и пространство (^ _ ^) *


python 2.6+ :

from __future__ import print_function # needs to be first statement in file
print('.', end='')

python 3 :

print('.', end='')

python <= 2.5 :

import sys
sys.stdout.write('.')

если после каждого распечатки дополнительное пространство в порядке, в python 2

print '.',

вводящий в заблуждение в python 2 - избегайте :

print('.'), # avoid this if you want to remain sane
# this makes it look like print is a function but it is not
# this is the `,` creating a tuple and the parentheses enclose an expression
# to see the problem, try:
print('.', 'x'), # this will print `('.', 'x') `

В Python 3 печать является функцией. Когда вы звоните

print ('hello world')

Python переводит его на

print ('hello world', end = '\n')

Вы можете изменить конец на все, что захотите.

print ('hello world', end = '')
print ('hello world', end = ' ')

Вы заметите, что все приведенные выше ответы верны. Но я хотел сделать ярлык, чтобы всегда писать параметр «end = '» в конце.

Вы можете определить функцию типа

def Print(*args,sep='',end='',file=None,flush=False):
    print(*args,sep=sep,end=end,file=file,flush=flush)

Он будет принимать все количество параметров. Даже он принимает все остальные параметры, такие как файл, флеш и т. Д. И с тем же именем.


Вы можете просто добавить в конце функции print чтобы она не печаталась на новой строке.


Вы можете сделать это с помощью end аргумента print . В Python3 range() возвращает итератор, а xrange() не существует.

for i in range(10): print('.', end='')

Есть два общих способа сделать это:

Печать без новой строки в Python 3.x

Не добавляйте ничего после инструкции print и удалите '\ n', используя end='' as:

>>> print('hello')
hello  # appending '\n' automatically
>>> print('world')
world # with previous '\n' world comes down

# solution is:
>>> print('hello', end='');print(' world'); # end with anything like end='-' but not '\n'
hello world # it seem correct output

Другой пример в цикле :

for i in range(1,10):
    print(i, end='.')

Печать без новой строки в Python 2.x

Добавление конечной запятой после печати игнорирует '\ n'.

>>> print "hello",; print" world"
hello world

Другой пример в цикле :

for i in range(1,10):
    print "{} .".format(i),

Надеюсь, что это поможет вам. Вы можете посетить эту link .


Использование functools.partial для создания новой функции printf

>>> import functools

>>> printf = functools.partial(print, end="")

>>> printf("Hello world\n")
Hello world

Простой способ обернуть функцию параметрами по умолчанию.


Используйте функцию печати в стиле python3 для python2.6 + (также будут разбиты любые существующие операторы печати с ключевыми словами в том же файле).

# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
    print('.', end='')

Чтобы не испортить все ваши ключевые слова python2, создайте отдельный файл printf.py

# printf.py

from __future__ import print_function

def printf(str, *args):
    print(str % args, end='')

Затем используйте его в своем файле

from printf import printf
for x in xrange(10):
    printf('.')
print 'done'
#..........done

Дополнительные примеры, демонстрирующие стиль printf

printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000

Новая функция print (как и для Python 3.0) имеет необязательный end параметр, который позволяет изменять символ окончания. Также есть разделитель для разделителя.


Ты можешь попробовать:

import sys
import time
# Keeps the initial message in buffer.
sys.stdout.write("\rfoobar bar black sheep")
sys.stdout.flush()
# Wait 2 seconds
time.sleep(2)
# Replace the message with a new one.
sys.stdout.write("\r"+'hahahahaaa             ')
sys.stdout.flush()
# Finalize the new message by printing a return carriage.
sys.stdout.write('\n')

Функция print в python автоматически создает новую строку. Вы можете попробовать:

print("Hello World", end="")


Это должно быть так просто, как описано в этой ссылке Гвидо ван Россумом:

Re: Как печатать без ac / r?

http://legacy.python.org/search/hypermail/python-1992/0115.html

Возможно ли напечатать что-то, но не автоматически добавить к нему возврат каретки?

Да, добавьте запятую после последнего аргумента для печати. Например, этот цикл печатает числа 0..9 в строке, разделенной пробелами. Обратите внимание на бесступенчатую «печать», которая добавляет окончательную новую строку:

>>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>> 

вы хотите напечатать что-то в цикле справа, но вы не хотите, чтобы он печатался в новой строке каждый раз ... например:

 for i in range (0,5):
   print "hi"

 OUTPUT:
    hi
    hi
    hi
    hi
    hi

но вы хотите, чтобы он печатался так: hi привет привет привет привет правой ???? просто добавьте запятую после печати «привет»

Пример:

for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi


Примечание. Название этого вопроса раньше было чем-то вроде «Как напечатать f в python?»

Поскольку люди могут приходить сюда искать его на основе названия, Python также поддерживает подстановку в стиле printf:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

И вы можете легко умножить строковые значения:

>>> print "." * 10
..........


for i in xrange(0,10): print '\b.',

Это работало как на 2.7.8, так и на 2.5.2 (терминал Canopy и OSX, соответственно) - не требуется импорт модулей или временное путешествие.





newline