IT story

파이썬 인쇄에 줄 바꿈이나 공백을 추가하지 않으려면 어떻게합니까?

hot-time 2020. 4. 15. 12:36
반응형

파이썬 인쇄에 줄 바꿈이나 공백을 추가하지 않으려면 어떻게합니까? [복제]


이 질문에는 이미 답변이 있습니다.

파이썬에서 내가 말하면

print 'h'

나는 편지 h와 줄 바꿈을 얻습니다. 내가 말하면

print 'h',

나는 편지 h를 얻지 만 개행은 없습니다. 내가 말하면

print 'h',
print 'm',

문자 h, 공백 및 문자 m을 얻습니다. 파이썬이 공간을 인쇄하지 못하게하려면 어떻게해야합니까?

print 문은 동일한 루프의 반복이 다르므로 + 연산자를 사용할 수 없습니다.


당신이 사용할 수있는:

sys.stdout.write('h')
sys.stdout.write('m')

단지 의견입니다. 에서 파이썬 3 , 당신은 사용

print('h', end='')

엔드 라인 종결자를 억제하기 위해

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

항목 사이의 공백 구분 기호를 표시하지 않습니다.


Greg가 옳습니다. sys.stdout.write를 사용할 수 있습니다

아마도 <whatevers> 목록을 축적하기 위해 알고리즘을 리팩토링하는 것을 고려해야합니다.

lst = ['h', 'm']
print  "".join(lst)

또는을 사용하십시오 +.

>>> print 'me'+'no'+'likee'+'spacees'+'pls'
menolikeespaceespls

모든 것이 연결 가능한 객체인지 확인하십시오.


Python 2.5.2 (r252:60911, Sep 27 2008, 07:03:14)
[GCC 4.3.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print "hello",; print "there"
hello there
>>> print "hello",; sys.stdout.softspace=False; print "there"
hellothere

그러나 실제로는 sys.stdout.write직접 사용해야 합니다.


완전성을 위해 다른 방법은 쓰기를 수행 한 후 소프트 스페이스 값을 지우는 것입니다.

import sys
print "hello",
sys.stdout.softspace=0
print "world",
print "!"

인쇄물 helloworld !

stdout.write ()를 사용하는 것이 아마도 대부분의 경우 더 편리 할 것입니다.


이것은 어리석게 보일지 모르지만 가장 간단한 것 같습니다.

    print 'h',
    print '\bm'

콘솔을 다시 제어하십시오! 간단히:

from __past__ import printf

어디에 __past__.py포함 :

import sys
def printf(fmt, *varargs):
    sys.stdout.write(fmt % varargs)

그때:

>>> printf("Hello, world!\n")
Hello, world!
>>> printf("%d %d %d\n", 0, 1, 42)
0 1 42
>>> printf('a'); printf('b'); printf('c'); printf('\n')
abc
>>>

추가 보너스 : 마음에 들지 않으면 print >> f, ...이 케이 퍼를 fprintf (f, ...)로 확장 할 수 있습니다.


새로운 답변을 추가하지 않습니다. 가장 좋은 답변을 더 나은 형식으로 작성하고 있습니다. 등급별 최고의 답변이을 사용하고 있음을 알 수 sys.stdout.write(someString)있습니다. 이것을 시도해 볼 수 있습니다.

    import sys
    Print = sys.stdout.write
    Print("Hello")
    Print("World")

산출 할 것이다 :

HelloWorld

그게 다야.


파이썬 2.6에서 :

>>> print 'h','m','h'
h m h
>>> from __future__ import print_function
>>> print('h',end='')
h>>> print('h',end='');print('m',end='');print('h',end='')
hmh>>>
>>> print('h','m','h',sep='');
hmh
>>>

따라서 __future__의 print_function을 사용하면 print 함수 sepend 매개 변수를 명시 적으로 설정할 수 있습니다 .


C에서 printf 함수처럼 print를 사용할 수 있습니다.

예 :

"% s % s"인쇄 % (x, y)


print("{0}{1}{2}".format(a, b, c))

sys.stdout.write(파이썬 2에서) 유일한 강력한 솔루션입니다. 파이썬 2 인쇄는 미쳤다. 이 코드를 고려하십시오.

print "a",
print "b",

a b인쇄되어 후행 공백이 인쇄되고있는 것으로 의심됩니다. 그러나 이것은 정확하지 않습니다. 대신 이것을 시도하십시오 :

print "a",
sys.stdout.write("0")
print "b",

인쇄 a0b됩니다. 어떻게 설명하니? 공간은 어디로 갔습니까?

나는 아직도 여기서 실제로 무슨 일이 일어나고 있는지 알 수 없습니다. 누군가 내 최고의 추측을 살펴볼 수 있습니까?

당신이 뒤에있을 때 규칙을 추론에서 내 시도 ,귀하에print :

먼저 print ,(파이썬 2에서) 공백 (줄 바꿈 또는 줄 바꿈)을 인쇄하지 않는다고 가정 해 봅시다 .

그러나 Python 2는 인쇄 방법에주의를 기울입니다- print또는 sys.stdout.write, 또는 다른 것을 사용하고 있습니까? 을 두 번 연속 호출하면 printPython은 둘 사이에 공백을 두어야합니다.


import sys
a=raw_input()
for i in range(0,len(a)):
       sys.stdout.write(a[i])

print('''first line \
second line''')

그것은 생산할 것이다

첫 번째 줄 두 번째 줄

참고 URL : https://stackoverflow.com/questions/255147/how-do-i-keep-python-print-from-adding-newlines-or-spaces

반응형