programing

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

projobs 2023. 2. 3. 21:28
반응형

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

C의 예:

for (int i = 0; i < 4; i++)
    printf(".");

출력:

....

Python의 경우:

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

Python, Python의 print will will will will will will 。\n또는 공백입니다.떻게하 하할 ?할? ????문자열을 추가하는 방법을 알고 싶습니다.stdout.

에서는 Python 3을 할 수 .sep= ★★★★★★★★★★★★★★★★★」end=함수의 파라미터:

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

print('.', end='')

인쇄하는 모든 함수 인수 사이에 공백을 추가하지 않으려면 다음 절차를 수행합니다.

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

어느 파라미터에도 임의의 문자열을 전달할 수 있으며 두 파라미터를 동시에 사용할 수 있습니다.

가 있는 수 .flush=True다음 중 하나:

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

Python 2.6 및 2.7

2.에서 Python 2.6 Import를 수 .print다음 모듈을 사용하여 Python 3에서 기능을 수행합니다.

from __future__ import print_function

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

이 경우 다음과 같은 해 주십시오.flush는, 할 수 없습니다.print에서 __future__Python 2 서 3 3 Python 3 python python python python python 。3.3으로 하다에서는 여전히 sys.stdout.flush()또한 이 Import를 수행하는 파일의 다른 모든 인쇄문도 다시 써야 합니다.

또는 를 사용할 수 있습니다.

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

전화도 필요하실 수 있습니다.

sys.stdout.flush()

stdout는 즉시 플래시 됩니다.

Python 2 이전 버전에서는 Guido van Rossum의 "How do one print without a CR?" (파라프레이스 첨부) 참조와 같이 간단해야 합니다.

캐리지 리턴을 자동으로 붙이지 않고 인쇄할 수 있습니까?

예, 인쇄할 마지막 인수 뒤에 쉼표를 추가합니다.예를 들어 이 루프는 숫자0 을 출력합니다.9는 공백으로 구분된 선상에 있습니다.마지막 줄바꿈을 추가하는 파라미터가 없는 "인쇄"에 주의하십시오.

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

주의: 이 질문의 제목은 "How to printf in 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
..........

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

2 키워드를 의 Python 2 print를 .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()

print3.인 Python 3.x가 .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

이 방법은 함수를 기본 매개 변수로 래핑하는 간단한 방법입니다.

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

print('Hello, World!')

Python이 번역하면

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

수 요.end원하는 대로 할 수 있어

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

2.에서는 Python 2.x 를 추가할 수 있습니다.,print새로운 행에 인쇄되지 않습니다.

Python 3:

print('.', end='')

Python 2.6+:

from __future__ import print_function # needs to be first statement in file
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.x에서 줄 바꿈 없이 인쇄

뒤에 도 붙이지 을 '\n'을 '\n'으로 하세요.end='', 다음과 같이 합니다.

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

링크에 접속할 수 있습니다.

다음 작업을 수행할 수 있습니다.

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

나도 최근에 같은 문제가 있었어...

다음 방법으로 해결했습니다.

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 에서는 테스트하지 않았습니다.

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

#!usr/bin/python

i = 0
while i<10 :
    print('.', end='')
    i = i+1

그것을 해 주세요.python filename.py ★★★★★★★★★★★★★★★★★」python3 filename.py.

이 대답들 중 많은 것들이 약간 복잡해 보인다.Python 3.x에서는 다음과 같이 간단하게 실행할 수 있습니다.

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

은 end 입니다."\n", , 할 수도 있습니다end=""printf보통 그래요.

오른쪽의 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

위의 답변이 모두 옳다는 것을 알 수 있습니다.단, 마지막에 항상 "end=" 파라미터를 쓰는 단축키를 만들고 싶었습니다.

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

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

모든 매개 변수 수를 수용할 수 있습니다.파일, 플러시 등 다른 모든 파라미터와 같은 이름을 사용할 수 있습니다.또, 같은 이름의 파라미터도 사용할 수 있습니다.

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

PuTTY 명령줄에 진행 표시줄을 만들고 싶었습니다.나는 그 페이지가 스크롤되는 것을 원하지 않았다.프로그램이 멈추지도 않고, 즐거운 무한 루프에 보내지도 않았다는 사실에 놀라지 않도록 가로줄을 치고 싶었다.-'나는 괜찮지만, 이것은 텍스트의 진행 막대처럼 인터랙티브한 메시지다.

print('Skimming for', search_string, '\b! .001', end='')는 다음 화면 쓰기를 준비하여 메시지를 초기화합니다.이 화면 쓰기는 3개의 백스페이스를 "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"가 "out"인 세 개의 숫자 위에 커서를 백업하고 새 마침표를 드롭하여 진행 표시줄 길이에 추가합니다.그리고 지금까지 진행되었던 페이지의 세 자리 숫자를 씁니다.왜냐면sys.stdout.write()는 풀 닫힐 .sys.stdout.flush()즉시 쓰기를 강제합니다. sys.stdout.flush()의 끝에 내장되어 있다.print()는 ""로 됩니다.print(txt, end='' )그 후, 코드는, 통상적인 시간을 소비하는 조작을 루프 해, 아무것도 인쇄하지 않고, 여기에 돌아와, 3 자리수를 소거해, 마침표를 추가하고, 3 자리수를 다시 기입합니다.

세하지 않습니다. 이 세 자릿수를 입니다. 이치노sys.stdout.write()vs 대 print() 소거할 수 , 백스페이스 않음)를 수 시-b 백스페이스(물론 포맷된 페이지 수도 쓰지 않음)를 쉽게 잊을 수 있습니다.sys.stdout.write('.'); sys.stdout.flush()pair.pair.pair.pair.

Rasberry Pi IDLE 3 Python 쉘은 백스페이스를 rub roubout으로 하지 않고 공간을 인쇄하여 분율 목록을 만듭니다.

end" 또는 ="sep=

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

출력:

.........

쓰세요.end=''

for i in range(5):
  print('a',end='')

# aaaaa
 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)

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

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

그럼 지금:

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

출력:

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

이 기능은 2.7.8과 2.5.2(각각 구입한 Canopy와 OS X 터미널) 모두에서 작동했습니다.모듈의 Import나 시간 이동은 불필요합니다.

Python3 :

print('Hello',end='')

예:

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

★★★★★Hello world

이 메서드는 제공된 텍스트 사이에 창자를 추가합니다.

print('Hello','world',sep=',')

★★★★★★Hello,world

라이브러리는 Import 할 필요가 없습니다.삭제 문자만 사용합니다.

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

그러면 줄 바꿈과 공백(^_^)*이 제거됩니다.

언급URL : https://stackoverflow.com/questions/493386/how-to-print-without-a-newline-or-space

반응형