etc./StackOverFlow

줄 바꿈이나 공백 없이 인쇄하는 방법

청렴결백한 만능 재주꾼 2021. 12. 3. 08:21
반응형

질문자 :Andrea Ambu


파이썬으로 하고 싶습니다. 이 예에서 C:

 #include <stdio.h> int main() { int i; for (i=0; i<10; i++) printf("."); return 0; }

산출:

 ..........

파이썬에서:

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

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



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

문자열 끝에 개행을 추가하지 않으려면:

 print('.', end='')

인쇄하려는 모든 함수 인수 사이에 공백을 추가하지 않으려면:

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

임의의 문자열을 매개변수 중 하나에 전달할 수 있으며 두 매개변수를 동시에 사용할 수 있습니다.

flush=True 키워드 인수를 추가하여 출력을 플러시할 수 있습니다.

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

파이썬 2.6 및 2.7

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

 from __future__ import print_function

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

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

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

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

당신은 또한 전화해야 할 수도 있습니다

 sys.stdout.flush()

stdout 이 즉시 플러시되도록 합니다.


codelogic

Python 2 및 이전 버전의 경우 Re: How do one print without CR?에 설명된 것처럼 간단해야 합니다. Guido van Rossum (의역):

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

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

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

KDP

참고: 이 질문의 제목은 "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 ..........

Beau

Python 2.6+용 Python 3 스타일 인쇄 기능을 사용합니다 (동일한 파일에 있는 기존 키워드 인쇄 명령문도 중단됨) .

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

모든 Python 2 인쇄 키워드를 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

k107

같은 줄에 인쇄하는 방법:

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

lenooh

새로운(Python 3.x부터) print 함수에는 종료 문자를 수정할 수 end

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

산출:

안녕 안녕

구분 기호에 대한 sep 도 있습니다.

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

산출:

안녕 안녕 안녕

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

 from __future__ import print_function

SilentGhost

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

 >>> import functools >>> printf = functools.partial(print, end="") >>> printf("Hello world\n") Hello world

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


sohail288

Python 3+에서 print 는 함수입니다. 전화할 때

 print('Hello, World!')

파이썬은 그것을 다음과 같이 번역합니다.

 print('Hello, World!', end='\n')

원하는대로 end 을 변경할 수 있습니다.

 print('Hello, World!', end='') print('Hello, World!', end=' ')

Yaelle

당신은 추가 할 수 있습니다 , 의 끝에서 print 가 새로운 라인을 인쇄하지 않도록, 기능.


user3763437

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

인쇄할 때마다 추가 공간이 있으면 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') `

n611x007

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

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

alvas

나는 최근에 같은 문제가 발생했습니다 ...

다음을 수행하여 해결했습니다.

 import sys, os # Reopen standard output with "newline=None". # in this mode, # Input: accepts any newline character, outputs as '\n' # Output: '\n' converts to os.linesep sys.stdout = os.fdopen(sys.stdout.fileno(), "w", newline=None) for i in range(1,10): print(i)

이것은 Unix와 Windows 모두에서 작동하지만 Mac OS X에서는 테스트하지 않았습니다.


ssgam

다음과 같이 Python 3에서도 동일한 작업을 수행할 수 있습니다.

 #!usr/bin/python i = 0 while i<10 : print('.', end='') i = i+1

python filename.py 또는 python3 filename.py 실행하십시오.


Subbu

이러한 답변 중 많은 부분이 약간 복잡해 보입니다. Python 3.x에서는 다음과 같이 하면 됩니다.

 print(<expr>, <expr>, ..., <expr>, end=" ")

end 의 기본값은 "\n" 입니다. 단순히 공백으로 변경하거나 end="" (공백 없음)를 사용하여 printf 일반적으로 수행하는 작업을 수행할 수도 있습니다.


jarr

for 루프 오른쪽에 무언가를 인쇄하고 싶습니다. 하지만 매번 새 줄에 인쇄하는 것을 원하지는 않습니다 ...

예를 들어:

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

하지만 다음과 같이 인쇄하기를 원합니다: 안녕하세요 안녕하세요 안녕하세요 안녕하세요 안녕하세요????

"hi"를 인쇄한 후 쉼표를 추가하기만 하면 됩니다.

예시:

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

산출:

 hi hi hi hi hi

Bala.K

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

다음과 같은 기능을 정의할 수 있습니다.

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

모든 수의 매개변수를 허용합니다. 심지어 파일, 플러시 등과 같은 다른 모든 매개변수를 동일한 이름으로 허용합니다.


Bikram Kumar

일반적으로 두 가지 방법이 있습니다.

Python 3.x에서 줄 바꿈 없이 인쇄

다음과 같이 print 문 뒤에 아무것도 추가하지 않고 end='' 사용하여 '\n'을 제거합니다.

 >>> print('hello') hello # Appending '\n' automatically >>> print('world') world # With previous '\n' world comes down # The solution is: >>> print('hello', end='');print(' world'); # End with anything like end='-' or end=" ", but not '\n' hello world # It seems to be the 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),

이 링크 를 방문할 수 있습니다.


susan097

lenooh가 내 질문을 만족시켰습니다. 'python suppress newline'을 검색하는 동안 이 기사를 발견했습니다. 저는 Raspberry Pi에서 IDLE 3 을 사용하여 PuTTY 용 Python 3.2를 개발하고 있습니다.

PuTTY 명령줄에 진행률 표시줄을 만들고 싶었습니다. 페이지가 스크롤되는 것을 원하지 않았습니다. 나는 프로그램이 중단되거나 즐거운 무한 루프에서 점심에 보내지지 않았다는 사실에 놀라지 않도록 사용자를 안심시키기 위해 수평선을 원했습니다. 시간이 좀 걸릴 수 있습니다.' 대화형 메시지 - 텍스트의 진행률 표시줄과 같습니다.

print('Skimming for', search_string, '\b! .001', end='') 은 다음 화면 쓰기를 준비하여 메시지를 초기화합니다. 그러면 세 개의 백스페이스를 ⌫⌫⌫ 문지름으로 인쇄한 다음 마침표, '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'가 ⌫⌫⌫인 세 개의 숫자 위에 커서를 백업하고 진행률 표시줄 길이에 추가할 새 마침표를 삭제합니다. 그런 다음 지금까지 진행한 페이지의 세 자리 숫자를 씁니다. 때문에 sys.stdout.write() 전체 버퍼 또는 가까운 출력 채널은 기다린다 sys.stdout.flush() 힘 바로 물품. sys.stdout.flush() print(txt, end='' ) 로 우회되는 print() 의 끝에 빌드됩니다. 그런 다음 코드는 일상적인 시간 집약적인 작업을 반복하면서 여기로 돌아와서 세 자리를 지우고 마침표를 추가하고 세 자리를 증가시켜 다시 쓸 때까지 아무 것도 인쇄하지 않습니다.

세 자리를 지우고 다시 쓸 필요는 전혀 없습니다. sys.stdout.write()print() 를 예시하는 번창일 뿐입니다. 마침표를 사용하여 공백이나 줄 바꿈 없이 마침표를 사용하여 매번 마침표 표시줄을 하나씩 더 길게 인쇄하면 마침표를 사용하여 쉽게 세 개의 백슬래시-b ⌫ 백스페이스를 잊어버릴 수 있습니다. sys.stdout.write('.'); sys.stdout.flush() 쌍.

Raspberry Pi IDLE 3 Python 셸은 백스페이스를 ⌫ rubout으로 인식하지 않고 대신 공백을 인쇄하여 명백한 분수 목록을 만듭니다.


DisneyWizard

 for i in range(0, 5): #setting the value of (i) in the range 0 to 5 print(i)

위의 코드는 다음과 같은 출력을 제공합니다.

 0 1 2 3 4

그러나 이러한 모든 출력을 직선으로 인쇄하려면 end()라는 속성을 추가하여 인쇄하기만 하면 됩니다.

 for i in range(0, 5): #setting the value of (i) in the range 0 to 5 print(i, end=" ")

산출:

 0 1 2 3 4

그리고 공백뿐만 아니라 출력에 다른 엔딩을 추가할 수도 있습니다. 예를 들어,

 for i in range(0, 5): #setting the value of (i) in the range 0 to 5 print(i, end=", ")

산출:

 0, 1, 2, 3, 4,

기억하다:

 Note: The [for variable in range(int_1, int_2):] always prints till the variable is 1 less than it's limit. (1 less than int_2)

Code Carbonate

또는 다음과 같은 기능이 있습니다.

 def Print(s): return sys.stdout.write(str(s))

그럼 지금:

 for i in range(10): # Or `xrange` for the Python 2 version Print(i)

출력:

 0123456789

U12-Forward

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

이것은 2.7.8 및 2.5.2(각각 Enthought Canopy 및 OS X 터미널)에서 작동했습니다. 모듈 가져오기 또는 시간 여행이 필요하지 않습니다.


tyersome

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

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

이것은 개행과 공백(^_^)*을 제거합니다.


mchrgr2000

출처 : http:www.stackoverflow.com/questions/493386/how-to-print-without-a-newline-or-space

반응형