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


12 Answers

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
>>> 
Question

문제는 제목에 있습니다.

python 하고 싶습니다. 이 예제에서는 c 에서 무엇을하고 싶은 c ?

#include <stdio.h>

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

산출:

..........

파이썬에서 :

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

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




당신은 시도 할 수 있습니다:

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')



새로운 (Python 3.0 현재) print 함수에는 끝 문자를 수정할 수있는 선택적인 end 매개 변수가 있습니다. 구분 sep 있습니다.




파이썬 2.6 이상 :

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

파이썬 3 :

print('.', end='')

파이썬 <= 2.5 :

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

각 인쇄 후에 추가 공간이 괜찮 으면, 파이썬 2에서

print '.',

파이썬 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') `



... 라이브러리를 가져올 필요가 없습니다. 그냥 삭제 문자를 사용하십시오 :

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

이것은 줄 바꿈과 공백을 제거합니다 (^ _ ^) *




@leooh가 내 쿼리를 만족했습니다. 나는 'python suppress newline'을 검색하는 동안이 기사를 발견했다. Puppy 용 Python 3.2를 개발하기 위해 Riddleberry Pi에 IDLE3을 사용하고 있습니다. PuTTY 명령 줄에 진행률 표시 줄을 만들고 싶었습니다. 나는 페이지를 멀리 스크롤 싶지 않았어. 나는 프로그램이 멈추지도 않았고, 무한한 루프에서 점심을 먹지도 않았다는 것을 놀라움으로부터 벗어나게하는 재현성있는 수평선을 원했다 .- 나를 떠나라는 탄원으로, 나는 잘하고있다. 그러나 이것은 약간의 시간이 걸릴 수 있습니다. ' 대화 형 메시지 - 텍스트의 진행률 막대와 같습니다.

print('Skimming for', search_string, '\b! .001', end='') 는 다음 화면 쓰기를 준비하여 메시지를 초기화합니다. 그러면 세 개의 백 스페이스가 ⌫⌫⌫ rubout으로 인쇄되고 다음에 마침표가 인쇄됩니다. '001'을 닦고 기간을 연장합니다. search_string 앵무새 사용자 입력 후, \b! search_string 텍스트의 느낌표를 뒤집어 print() 가 돌려주는 공간을 되돌려줍니다. 그렇지 않으면 강제로 구두점을 넣습니다. 그 다음에는 시뮬레이션 할 '진행률 막대'의 첫 번째 '점'과 공백이옵니다. 불필요하게 메시지는 페이지 번호 (맨 앞에 0이 붙은 3의 길이로 포맷 됨)로 채워져 진행 상황이 처리되고 있으며 나중에 진행될 사용자 수를 반영하여 사용자에게 통지합니다. 권리.

import sys

page=1
search_string=input('Search for?',)
print('Skimming for', search_string, '\b! .001', end='')
sys.stdout.flush() # the print function with an end='' won't print unless forced
while page:
    # some stuff…
    # search, scrub, and build bulk output list[], count items,
    # set done flag True
    page=page+1 #done flag set in 'some_stuff'
    sys.stdout.write('\b\b\b.'+format(page, '03')) #<-- here's the progress bar meat
    sys.stdout.flush()
    if done: #( flag alternative to break, exit or quit)
        print('\nSorting', item_count, 'items')
        page=0 # exits the 'while page' loop
list.sort()
for item_count in range(0, items)
    print(list[item_count])
#print footers here
 if not (len(list)==items):
    print('#error_handler')

진행률 막대는 sys.stdout.write('\b\b\b.'+format(page, '03')) 행에 있습니다. 먼저 왼쪽으로 지우려면 '\ b \ b \ b'을 (를) rubout으로 사용하여 세 개의 숫자로 커서를 백업하고 새 기간을 삭제하여 진행률 표시 줄 길이에 추가하십시오. 그런 다음 지금까지 진행 한 페이지 세 자리를 씁니다. sys.stdout.write() 는 전체 버퍼 또는 출력 채널을 닫을 때까지 기다리기 때문에 sys.stdout.write() 는 즉시 쓰기를 강제 실행합니다. sys.stdout.flush()print() 의 끝 부분에 내장되어 있으며 print(txt, end='' ) 는 무시됩니다. 그런 다음 코드는 평범한 시간 집약적 인 작업을 반복하며 여기에 반환 될 때까지 아무 것도 인쇄하지 않고 다시 3 자리를 지우고 마침표를 추가하고 3 자리수를 다시 작성하고 증가시킵니다.

닦아서 다시 써서 쓰는 3 자리 숫자는 꼭 필요한 것은 아닙니다. 단지 sys.stdout.write()print() 입니다. 단순히 마침표를 한 마디 더 길게 인쇄하여 공백이나 줄 바꿈없이 공백이나 줄 바꿈없이 공백없이 백 슬래시와 백백 세 개의 공백을 잊어 버릴 수 있습니다 (물론 형식화 된 페이지 수도 쓰지 않습니다). sys.stdout.write('.'); sys.stdout.flush() sys.stdout.write('.'); sys.stdout.flush() 쌍.

Raspberry Pi IDLE3 Python 셸은 백 스페이스를 ⌫ rubout으로 간주하지 않고 공백을 인쇄하여 겉보기 분수리스트를 생성합니다.

- (o = 8> wiz




Python3 스타일의 print 함수를 python2.6 + 에 사용하십시오 (동일한 파일에있는 기존의 키워드로 된 print 문도 중단됩니다).

# 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 파일을 만듭니다.

# 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



위의 모든 대답이 정확하다는 것을 알 수 있습니다. 그러나 나는 항상 "end = ''"매개 변수를 쓰는 지름길을 만들고 싶었다.

다음과 같은 함수를 정의 할 수 있습니다.

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

그것은 모든 매개 변수의 수를 받아 들일 것입니다. 심지어 파일, 플러시 등과 같은 다른 모든 매개 변수를 받아 들일 것이며 같은 이름을 갖습니다.




안녕 firstname 성! a가 a 주 이름이고 b가 last name 인 경우 인쇄하지만 성을 인쇄하는 동안 마지막으로 공백 이 추가됩니다.

a="Firstname"
b="Lastname"
print("Hello",a,b+"!")



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

이는 2.7.8 및 2.5.2 (Canopy 및 OSX 터미널)에서 모두 작동합니다. 모듈 가져 오기 또는 시간 이동이 필요하지 않습니다.




functools.partial을 사용하여 printf라는 새 함수를 만듭니다.

>>> import functools

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

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

기본 매개 변수로 함수를 래핑하는 쉬운 방법.




파이썬 3.6.1 용 코드

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

산출

..........
>>>



Python 3에서 인쇄 기능이 있습니다. 전화 할 때

print ('hello world')

파이썬은 그것을 다음으로 변환합니다.

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

원하는대로 끝을 바꿀 수 있습니다.

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


Related