[python] 줄 바꿈이나 공백없이 인쇄하는 방법?

나는 그것을하고 싶습니다 . 이 예제에서하고 싶은 것:

C에서 :

#include <stdio.h>

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

산출:

..........

파이썬에서 :

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

파이썬 print에서 \n또는 공백 을 추가하면 어떻게 피할 수 있습니까? 자, 이것은 단지 예일뿐입니다. 먼저 문자열을 만든 다음 인쇄 할 수 있다고 말하지 마십시오. 문자열을 “추가”하는 방법을 알고 싶습니다 stdout.



답변

Python 3에서는 함수 의 sep=end=매개 변수를 사용할 수 있습니다 print.

문자열 끝에 줄 바꿈을 추가하지 않으려면 :

print('.', end='')

인쇄하려는 모든 함수 인수 사이에 공백을 추가하지 않으려면 다음을 수행하십시오.

print('a', 'b', 'c', sep='')

어떤 문자열이든 매개 변수에 전달할 수 있으며 두 매개 변수를 동시에 사용할 수 있습니다.

버퍼링에 문제가있는 경우 flush=True키워드 인수 를 추가하여 출력을 플러시 할 수 있습니다 .

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

파이썬 2.6 및 2.7

Python 2.6 print에서 __future__모듈을 사용하여 Python 3 에서 함수를 가져올 수 있습니다 .

from __future__ import print_function

위의 Python 3 솔루션을 사용할 수 있습니다.

그러나 Python 2에서 가져온 함수 flush버전 에서는 키워드를 사용할 수 없습니다 . 파이썬 3, 구체적으로 3.3 이상에서만 작동합니다. 이전 버전에서는을 호출하여 수동으로 플러시해야합니다 . 또한이 가져 오기를 수행하는 파일의 다른 모든 인쇄 문을 다시 작성해야합니다.print__future__sys.stdout.flush()

아니면 사용할 수 있습니다 sys.stdout.write()

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

전화해야 할 수도 있습니다

sys.stdout.flush()

보장하기 위해 stdout즉시 플러시됩니다.


답변

Guido Van Rossum의이 링크에서 설명한 것처럼 간단해야합니다.

Re : ac / r없이 어떻게 인쇄합니까?

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

인쇄 할 수 있지만 캐리지 리턴이 자동으로 추가되지는 않습니까?

예, 마지막 인수 뒤에 쉼표를 추가하여 인쇄하십시오. 예를 들어,이 루프는 공백으로 구분 된 행에 숫자 0..9를 인쇄합니다. 마지막 줄 바꿈을 추가하는 매개 변수가없는 “print”에 유의하십시오.

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


답변

참고 :이 질문의 제목은 “파이썬에서 어떻게 printf?”

사람들은 제목을 기반으로 여기를 찾게 될 수도 있기 때문에 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
..........


답변

python2.6 +에 python3 스타일 인쇄 기능을 사용하십시오 (동일한 파일에서 기존 키워드로 인쇄 된 명령문도 손상시킵니다).

# 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


답변

같은 줄에 인쇄하는 방법 :

import sys
for i in xrange(0,10):
   sys.stdout.write(".")
   sys.stdout.flush()


답변

새로운 (Python 3.x부터) print함수에는 end끝 문자를 수정할 수 있는 선택적 매개 변수가 있습니다.

print("HELLO", end="")
print("HELLO")

산출:

안녕 안녕

도 있습니다 sep구분을 위해 :

print("HELLO", "HELLO", "HELLO", sep="")

산출:

안녕 안녕 안녕

Python 2.x에서 이것을 사용하려면 파일 시작 부분 에 이것을 추가 하십시오.

from __future__ import print_function


답변

functools.partial을 사용하여 printf라는 새로운 함수 만들기

>>> import functools

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

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

기본 매개 변수로 함수를 쉽게 감쌀 수 있습니다.